2009-07-11 6 views
4

Standardmäßig antwortet Apache 2.0.52 auf jede HTTP TRACE-Anforderung, die empfangen wird. Dies ist ein potenzielles Sicherheitsproblem, da bestimmte Arten von XSS-Angriffen zugelassen werden können. Weitere Informationen finden Sie unter http://www.apacheweek.com/issues/03-01-24#newsDeaktivieren der TRACE-Anforderungsmethode unter Apache/2.0.52

Ich versuche, TRACE-Anforderungen zu deaktivieren, indem ich die Anweisungen befolge, die auf der oben verlinkten Seite angezeigt werden. Ich fügte hinzu, die folgenden Zeilen Code zu meiner http.conf Datei und neu gestartet Apache:

RewriteEngine On 
RewriteCond %{REQUEST_METHOD} ^TRACE 
RewriteRule .* - [F] 

Allerdings, wenn ich eine TRACE Anfrage per Web-Server senden, wie es scheint, die Rewrite-Regeln zu ignorieren und reagiert, als ob TRACE Anforderungen wurden weiterhin aktiviert.

Zum Beispiel:

[[email protected] ~]$ 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. 

Der Server mit 403 verbotenen reagieren soll. Stattdessen gibt es meine Anfrage mit 200 OK zurück.

Als Test änderte ich die RewriteCond zu% {REQUEST_METHOD}^

, wenn ich dies tun, Apache reagiert korrekt auf alle GET-Anfragen mit 403 Forbidden. Aber wenn ich GET zurück in TRACE ändere, lassen sich TRACE-Anfragen weiterhin durch.

Wie kann ich Apache dazu bringen, nicht mehr auf TRACE-Anfragen zu antworten?

Antwort

1

Ich dachte, den richtigen Weg, um es zu tun.

Ich hatte versucht, den Block der Rewrite-Direktiven an drei Stellen zu platzieren: in der Teil der httpd.conf Datei, am Anfang meiner httpd.conf Datei, und in der /var/www/html/.htaccess Datei. Keine dieser drei Methoden funktionierte.

Schließlich habe ich versucht, den Code-Block in <VirtualHost *:80> Teil meiner httpd.conf setzen. Aus irgendeinem Grund funktioniert es, wenn es platziert wird. Dort.

1

Einige Versionen benötigen:

Traceenable Off

+0

Apache 2.0.52 unterstützt die TraceEnable-Anweisung nicht –

1

Wie Sie gesagt haben, funktioniert das in Ihrem VirtualHost-Block. Da du httpd.conf nicht angezeigt hast, kann ich nicht sagen, warum dein erster Versuch nicht funktioniert hat - er ist kontextsensitiv.

Es scheiterte in der, weil es dort nicht wirklich relevant ist, das ist in der Regel für die Zugangskontrolle. Wenn es in der .htaccess nicht funktionierte, war es wahrscheinlich, dass Apache nicht danach suchte (Sie können AllowOverride verwenden, um sie zu aktivieren).