Невозможно проверить исходный IP-адрес, особенно при использовании прокси. В случае с прокси-сервером цепочка IP-адресов должна быть помещена в заголовки http, но это, безусловно, может быть фальсифицировано, так что то, что выражает, является исходным IP, нельзя доверять. Это, скорее всего, точно, но не гарантируется точность.
req.path
полностью локальный и не включает в себя какие-либо заголовки клиентов и не подлежит никакому подмену клиента. Он исходит только от фактического URL-адреса HTTP-запроса, который поступает на ваш сервер. Единственный способ, которым он не был бы таким же, как фактический URL-адрес запроса, - это использовать точку монтирования для маршрутизаторов, и в этом случае часть точки монтирования пути будет удалена экспресс. Или, может быть, если ваше собственное промежуточное ПО попытается с ним связать.
Ну, вы не должны делать 'eval (req.ip)', если это то, о чем вам интересно. Но использование строки в req.ip, поскольку только строка должна быть безопасной Существует множество способов для клиента обманывать свой реальный IP-адрес (например, прокси), поэтому вы никогда не сможете предположить, что 'req.ip' является фактическим IP-адресом клиента и там это не значит, что Express/Node проверяет, что такое реальный клиентский IP-адрес. – jfriend00
Спасибо за комментарий. Яркий Javascript был всего лишь примером. Конкретный вариант использования заключается в том, что мы регистрируем ip в базе данных и хотим убедиться, что вставляются только действительные ip. Итак, из вашего примера я полагаю, что выражение и узел не проверяют поля запроса, правильно? – FunkyPeanut
Невозможно проверить правильность IP-адреса источника, особенно при использовании прокси. В случае с прокси-сервером цепочка IP-адресов должна быть помещена в заголовки http, но это, безусловно, может быть фальсифицировано, так что то, что выражает, является исходным IP, нельзя доверять. Это, скорее всего, точно, но не гарантируется точность. – jfriend00