Express за прокси¶
При запуске приложения Express за прокси-сервером, необходимо указать (с помощью app.set()) для переменной приложения trust proxy одно из значений, приведенных в таблице ниже.
Хотя приложение будет запущено и без указания значения переменной приложения trust proxy, отсутствие заданного значения trust proxy приведет к некорректной регистрации IP-адреса прокси в качестве клиентского IP-адреса.
Булевский¶
Если указано значение true, клиентским IP-адресом считается первая слева запись в заголовке X-Forwarded-*.
Если указано значение false, приложение считается имеющим прямой выход в Интернет, и IP-адрес клиента будет производным от req.connection.remoteAddress. Это значение используется по умолчанию.
IP-адреса¶
IP-адрес, подсеть или массив IP-адресов и подсетей, считающихся надежными. В приведенном ниже списке перечислены предварительно заданные имена подсетей:
- loopback -
127.0.0.1/8,::1/128 - linklocal -
169.254.0.0/16,fe80::/10 - uniquelocal -
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,fc00::/7
IP-адреса можно задать любым из указанных ниже способов:
1 2 3 4 5 6 7 8 | |
Если IP-адреса или подсети указаны, они исключаются из процесса определения адреса, и незащищенный IP-адрес, ближайший к серверу приложений, будет определен как IP-адрес клиента.
Число¶
Считать защищенным n-й элемент пути от прокси-сервера со стороны клиента, в качестве клиента.
Функция¶
Реализация нестандартного механизма защиты. Используйте этот метод, только если вы уверены в своих знаниях.
1 2 3 4 5 6 | |
Установка значения, отличного от false, для trust proxy ведет к трем существенным изменениям:
- Значение
req.hostnameявляется производным от значения, указанного в заголовкеX-Forwarded-Host, который может быть задан клиентом или прокси. - Заголовок
X-Forwarded-Protoможет быть задан обратным прокси-сервером и указывает приложению на использование протоколаhttps, илиhttp, или даже недопустимого имени. Это значение отражается вreq.protocol. - Значения
req.ipиreq.ipsзаполняются собой списком адресов, взятых изX-Forwarded-For.
Параметр trust proxy реализуется с помощью пакета proxy-addr. Дополнительная информация приведена в документации к нему.