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. Дополнительная информация приведена в документации к нему.