【问题标题】:Disabling TRACE request method on Apache/2.0.52在 Apache/2.0.52 上禁用 TRACE 请求方法
【发布时间】: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


    【解决方案1】:

    某些版本需要:

    TraceEnable 关闭

    【讨论】:

    • Apache 2.0.52 不支持 TraceEnable 指令
    【解决方案2】:

    我找到了正确的方法。

    我曾尝试将重写指令块放置在三个位置:httpd.conf 文件的<Directory "/var/www/html"> 部分、httpd.conf 文件的顶部和/var/www/html/。 htaccess 文件。这三种方法都不起作用。

    不过,最后,我尝试将代码块放入我的 httpd.conf 的 <VirtualHost *:80> 部分。出于某种原因,它在放置时起作用。在那里。

    【讨论】:

      【解决方案3】:

      正如您所说,这适用于您的 VirtualHost 块。由于您没有显示 httpd.conf,我无法说明为什么您的初始尝试不起作用 - 它是上下文相关的。

      它失败了,因为它在那里并不真正相关,这通常是为了访问控制。如果它在 .htaccess 中不起作用,则可能是 apache 没有在寻找它(您可以使用 AllowOverride 来启用它们)。

      【讨论】:

        猜你喜欢
        • 2010-09-24
        • 1970-01-01
        • 2019-07-02
        • 2020-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        相关资源
        最近更新 更多