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.
Несмотря на их схожесть, они сильно отличаются:
$http- хост в порядке приоритета: имя хоста из строки запроса, или имя хоста из заголовкаHostзаголовка запроса, или имя сервера, соответствующего запросу;$http_host- заголовок запроса "Host".
Пример такой конфигурации:
location @app {
proxy_set_header Host $http_host;
# Other proxy params
proxy_pass http://backend;
}
Что делать?
К счастью, все довольно очевидно:
- перечислить корректные имена сервера в директиве
server_name; - всегда использовать переменную
$host, вместо$http_host.