【发布时间】:2009-07-11 17:40:08
【问题描述】:
默认情况下,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 Forbidden 响应。相反,它以 200 OK 回应我的请求。
作为测试,我将 RewriteCond 更改为 %{REQUEST_METHOD} ^GET
当我这样做时,Apache 正确响应所有带有 403 Forbidden 的 GET 请求。但是当我将 GET 改回 TRACE 时,它仍然允许 TRACE 请求通过。
如何让 Apache 停止响应 TRACE 请求?
【问题讨论】:
标签: apache xss trace mod-rewrite