gixy/docs/ru/plugins/hostspoofing.md

33 lines
2.3 KiB
Markdown
Raw Permalink Normal View History

2017-04-04 22:23:16 +00:00
# [host_spoofing] Подделка заголовка запроса Host
Зачастую, приложению, стоящему за Nginx, необходимо передать корректный заголовок `Host` для корректной генерации различных URL-адресов (редиректы, ресурсы, ссылки в письмах и т.д.).
Возможность его подмены злоумышленником может повлечь множестве проблем от фишинговых атак до SSRF, поэтому следует избегать таких ситуаций.
> Возможно, ваше приложение так же ориентируется на заголовок запроса `X-Forwarded-Host`.
> В этом случае вам необходимо самостоятельно позаботится о его корректной установке при проксировании.
## Как самостоятельно обнаружить?
Чаще всего эта проблема возникает в результате использования переменной `$http_host` вместо `$host`.
Несмотря на их схожесть, они сильно отличаются:
2018-04-04 12:41:33 +00:00
* `$host` - хост в порядке приоритета: имя хоста из строки запроса, или имя хоста из заголовка `Host` заголовка запроса, или имя сервера, соответствующего запросу;
2017-04-04 22:23:16 +00:00
* `$http_host` - заголовок запроса "Host".
Пример такой конфигурации:
```nginx
location @app {
proxy_set_header Host $http_host;
# Other proxy params
proxy_pass http://backend;
}
```
## Что делать?
К счастью, все довольно очевидно:
* перечислить корректные имена сервера в директиве `server_name`;
* всегда использовать переменную `$host`, вместо `$http_host`.
## Дополнительная информация
* [Host of Troubles Vulnerabilities](https://hostoftroubles.com/)
2018-04-04 12:41:33 +00:00
* [Practical HTTP Host header attacks](http://www.skeletonscribe.net/2013/05/practical-http-host-header-attacks.html)