mirror of https://github.com/yandex/gixy
2.3 KiB
2.3 KiB
[host_spoofing] Подделка заголовка запроса Host
Зачастую, приложению, стоящему за Nginx, необходимо передать корректный заголовок Host
для корректной генерации различных URL-адресов (редиректы, ресурсы, ссылки в письмах и т.д.).
Возможность его подмены злоумышленником может повлечь множестве проблем от фишинговых атак до SSRF, поэтому следует избегать таких ситуаций.
Возможно, ваше приложение так же ориентируется на заголовок запроса
X-Forwarded-Host
. В этом случае вам необходимо самостоятельно позаботится о его корректной установке при проксировании.
Как самостоятельно обнаружить?
Чаще всего эта проблема возникает в результате использования переменной $http_host
вместо $host
.
Несмотря на их схожесть, они сильно отличаются:
$host
- хост в порядке приоритета: имя хоста из строки запроса, или имя хоста из заголовкаHost
заголовка запроса, или имя сервера, соответствующего запросу;$http_host
- заголовок запроса "Host".
Пример такой конфигурации:
location @app {
proxy_set_header Host $http_host;
# Other proxy params
proxy_pass http://backend;
}
Что делать?
К счастью, все довольно очевидно:
- перечислить корректные имена сервера в директиве
server_name
; - всегда использовать переменную
$host
, вместо$http_host
.