Knowledge Base
Safe Active Host Header Check
Safe Active Host Header Check
Категория: Web App Security · Риск: medium
Safe Active Host Header Check
Что проверяет NodeRoute
NodeRoute отправляет один безопасный `GET` с неожиданным `Host`:
Host: noderoute-host-probe.invalid
Сканер смотрит, отражается ли этот host в `Location` или HTML, и не вызывает ли он 5xx.
Почему это важно
Некоторые приложения используют `request.host` для генерации абсолютных ссылок, reset-ссылок, canonical URL или cache keys.
Если чужой Host отражается, возможны:
- password reset poisoning;
- cache poisoning;
- неверные ссылки в письмах;
- обход части routing-логики.
Хороший результат
- неизвестный Host возвращает `400`, `403` или `421`;
- default virtual host не отдаёт приложение, API или брендовый контент;
- Host не отражается в HTML и redirect;
- backend не получает такой запрос напрямую.
Плохой результат
- Host отражается в ответе;
- неизвестный Host получает `200 OK` и обычную страницу/API-ответ;
- неизвестный Host вызывает `500/502/503`;
- приложение строит абсолютные URL из входящего Host.
Быстрая проверка
curl -skI -H "Host: attacker.invalid" https://example.com/
curl -sk -H "Host: attacker.invalid" https://example.com/ | head
Хороший результат:
HTTP/2 421
или:
HTTP/1.1 400 Bad Request
Плохой результат:
HTTP/1.1 200 OK
...
обычный HTML сайта или API-ответ
Как исправить
Nginx
server {
listen 80 default_server;
return 421;
}
server {
listen 443 ssl default_server;
server_name _;
ssl_reject_handshake on;
}
server {
server_name example.com www.example.com;
proxy_set_header Host $host;
}
В приложении задайте `BASE_URL` явно, а не из `request.host`.
Если `ssl_reject_handshake` недоступен, используйте отдельный default-server с валидным сертификатом и `return 421;`.
Связанные проверки
- [Host Header Injection](/kb/web_app_security/host-header-injection)
- [Safe Active Diagnostics](/kb/monitoring/safe-active-diagnostics)