Knowledge Base
Safe Active HTTP Method Behavior Check
Safe Active HTTP Method Behavior Check
Категория: Server Hardening · Риск: medium
Safe Active HTTP Method Behavior Check
Что проверяет NodeRoute
NodeRoute отправляет несколько безопасных read-only запросов, чтобы понять, насколько контролируемо сайт обрабатывает стандартные HTTP-механики:
- `HEAD /`;
- `OPTIONS /`;
- неизвестный method `NODEROUTE /`;
- `GET /` с `Range: bytes=0-127`.
Проверка не отправляет body, формы, credentials, exploit payloads и не меняет состояние сервера.
Почему это важно
Многие сайты выглядят нормально при обычном `GET`, но ломаются на стандартных служебных запросах, которые используют:
- uptime monitoring;
- CDN и reverse proxy;
- поисковые роботы;
- mobile clients;
- download managers;
- bot traffic.
Если `HEAD`, `OPTIONS`, unknown method или `Range` приводят к 5xx, это признак хрупкой edge/backend-цепочки. Если они не падают, но отвечают заметно медленнее обычного ожидания, это тоже полезный сигнал: read-only служебный запрос может попадать в дорогой путь обработки.
Хороший результат
- `HEAD` ведёт себя совместимо с `GET`;
- `OPTIONS` не рекламирует лишние dangerous methods;
- unknown method возвращает `400`, `403`, `405` или `501`;
- `Range` возвращает `200`, `206`, `301/302`, `403` или `416`, но не `5xx`.
- короткие `HEAD` и `Range` не требуют нескольких секунд на обработку.
Что считается риском
HEAD вызывает 5xx
Мониторинг может считать сайт недоступным, хотя браузер открывает страницу.
OPTIONS рекламирует PUT/DELETE/PATCH/CONNECT
Это не всегда уязвимость, но расширяет поверхность атаки и показывает, что method allowlist требует проверки.
Unknown method вызывает 5xx
Сайт должен контролируемо отклонять неизвестные методы, а не передавать их в хрупкий backend handler.
Range вызывает 5xx
Маленький Range-запрос не должен ломать сервер. Ошибка может быть в CDN, reverse proxy, static handler или backend.
HEAD или Range отвечают слишком медленно
Это не эксплуатация и не прямой признак взлома. Но если короткий служебный запрос занимает несколько секунд, сайт может хуже проходить мониторинг, health checks, индексацию и короткие всплески bot/read-only traffic.
Как исправить
Nginx method allowlist
if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$) {
return 405;
}
HEAD
Убедитесь, что публичные GET-маршруты не блокируют HEAD отдельно.
OPTIONS
Не отдавайте `Allow: PUT, DELETE, PATCH`, если эти методы не нужны на публичном endpoint.
Range
Проверьте обработку `Range` в CDN/reverse proxy и статическом файловом handler. Некорректный Range должен завершаться контролируемо, а не `500/502/503`.
Для динамического HTML проверьте, не запускает ли `Range` полную генерацию страницы. Иногда лучше быстро вернуть обычный `200` или корректный `416/206`, чем тратить ресурсы на полный backend path.
Чего не делает NodeRoute
- не отправляет `PUT/DELETE/PATCH`;
- не делает destructive requests;
- не проверяет авторизацию;
- не fuzzing;
- не использует exploit payloads.
Связанные проверки
- [Safe Active Diagnostics](/kb/monitoring/safe-active-diagnostics)
- [Safe Active TRACE Method Check](/kb/server_hardening/safe-active-trace-method-check)
- [Safe Active Long Header Check](/kb/server_hardening/safe-active-long-header-check)