Es gibt keine Möglichkeit, die Quell-IP zu validieren, insbesondere wenn es sich um Proxies handelt. Im Proxy-Fall soll eine Kette von IP-Adressen in HTTP-Header eingefügt werden, aber das kann sicherlich gefälscht werden, also was denkt, dass die ursprüngliche IP nicht vertrauenswürdig ist. Es ist wahrscheinlich genau, aber nicht garantiert genau.
req.path
ist vollständig lokal und enthält keine Client-Header und unterliegt keinem Client-Spoofing. Es kommt nur von der tatsächlichen HTTP-Anfrage-URL, die auf Ihrem Server ankommt. Die einzige Möglichkeit, die nicht mit der tatsächlichen Anforderungs-URL übereinstimmt, ist, wenn Sie einen Einhängepunkt für Router verwenden. In diesem Fall wurde der Einhängepunkt-Teil des Pfades per Express entfernt. Oder vielleicht, wenn Ihre eigene Middleware versucht hat, sich damit anzulegen.
Nun, Sie sollten nicht eine 'eval (req.ip)' tun, wenn das ist, worüber Sie sich wundern. Aber die Verwendung der Zeichenkette in req.ip als nur eine Zeichenkette sollte sicher sein Es gibt viele Möglichkeiten für einen Client, ihre echte IP (zB Proxies) zu fälschen, so dass Sie niemals annehmen können, dass "req.ip" die eigentliche Client-IP und dort ist ist es für Express/Node nicht möglich, die tatsächliche Client-IP zu validieren. – jfriend00
Danke für den Kommentar. Das bösartige Javascript war nur ein Beispiel. Der konkrete Anwendungsfall besteht darin, dass wir die IP in einer Datenbank protokollieren und sicherstellen möchten, dass nur gültige IPs eingefügt werden. Also von Ihrem Beispiel nehme ich an, dass Express und Knoten beide die Anfragefelder nicht validieren, richtig? – FunkyPeanut
Es gibt keine Möglichkeit, Quell-IP zu validieren, insbesondere wenn es sich um Proxies handelt. Im Proxy-Fall soll eine Kette von IP-Adressen in HTTP-Header eingefügt werden, aber das kann sicherlich gefälscht werden, also was denkt, dass die ursprüngliche IP nicht vertrauenswürdig ist. Es ist wahrscheinlich genau, aber nicht garantiert genau. – jfriend00