По умолчанию Apache 2.0.52 будет отвечать на любой полученный HTTP-запрос TRACE. Это потенциальная проблема безопасности, поскольку она допускает определенные типы XSS-атак. Подробнее см. http://www.apacheweek.com/issues/03-01-24#news
Я пытаюсь отключить запросы TRACE, следуя инструкциям на странице, указанной выше. Я добавил следующие строки кода в мой файл http.conf и перезапустил apache:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
Однако, когда я отправляю запрос TRACE на мой веб-сервер, он, кажется, игнорирует правила перезаписи и отвечает, как если бы запросы TRACE все еще были включены.
Например:
[admin2@dedicated ~]$ telnet XXXX.com 80
Trying XXXX...
Connected to XXXX.com (XXXX).
Escape character is '^]'.
TRACE / HTTP/1.0
X-Test: foobar
HTTP/1.1 200 OK
Date: Sat, 11 Jul 2009 17:33:41 GMT
Server: Apache/2.0.52 (Red Hat)
Connection: close
Content-Type: message/http
TRACE / HTTP/1.0
X-Test: foobar
Connection closed by foreign host.
Сервер должен ответить 403 Запрещено. Вместо этого он отвечает на мой запрос с 200 OK.
В качестве теста я изменил RewriteCond на% {REQUEST_METHOD} ^ GET
Когда я делаю это, Apache правильно отвечает на все запросы GET с помощью 403 Forbidden. Но когда я изменяю GET обратно на TRACE, он все равно пропускает запросы TRACE.
Как я могу заставить Apache перестать отвечать на запросы TRACE?