Назад | Перейти на главную страницу

Проверка кодов состояния HTTP

Я использую сервер Apache Tomcat. Проведя некоторое тестирование безопасности, я заметил, что мой сервер возвращает код состояния HTTP 200 страницы ошибки по умолчанию, когда я пытаюсь получить доступ к несуществующему элементу вместо того, чтобы вернуть код состояния 404 и перенаправить меня на страницу ошибки по умолчанию. Подозреваю, что это не единственный сбой в данной проблеме.

Кто-нибудь может предложить мне процесс проверки наиболее распространенных кодов состояния HTTP?

Я бы использовал сценарий Bash, который вызывает netcat один раз для каждого типа ответа с соответствующими входными данными для генерации каждого другого кода ответа. Я бы протрубил это хотя grep чтобы проверить правильный ответ и вывести сообщение на STDERR если не правильно.

Это должно быть относительно легко для диапазонов 2xx, 3xx и 4xx, если на вашем сервере существуют URL-адреса, которые фактически генерируют каждый другой код ответа. Диапазоны 5xx относятся к ошибкам на стороне сервера, поэтому для их преднамеренного вызова вам нужно будет настроить определенные URL-адреса на вашем сервере, которые вызывают каждую ошибку. Диапазон 1xx, вероятно, лучше всего протестировать с использованием более полного HTTP-клиента, такого как curl или wget.

Скорее всего, есть несколько способов решить эту проблему.


Есть неприятная ошибка в некоторых версиях netcat это означает, что он завершится, как только закончит чтение из STDIN. Кроме того, на страницах руководства, поставляемых с этой версией с ошибками, есть пример, который не работает. Обходной путь - это -q <number> параметр, который указывает количество секунд, в течение которых нужно ждать ответа, прежде чем выйти.

echo -ne "GET / HTTP/1.1\nHost: example.com\n\n" | nc -q 1 example.com 80 | grep -q "HTTP/1.1 301" || echo "HTTP 302 test failed!" >&2