2009-07-11 7 views
4

Par défaut, Apache 2.0.52 répond à toute requête HTTP TRACE qu'il reçoit. Ceci est un problème de sécurité potentiel car il peut autoriser certains types d'attaques XSS. Pour plus de détails, voir http://www.apacheweek.com/issues/03-01-24#newsDésactivation de la méthode de requête TRACE sous Apache/2.0.52

J'essaie de désactiver les requêtes TRACE en suivant les instructions affichées sur la page liée à ci-dessus. J'ai ajouté les lignes de code suivantes à mon dossier http.conf et remis en marche apache:

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

Cependant, quand j'envoie une demande de TRACE à mon serveur web, il semble ignorer les règles de réécriture et répond comme si TRACE les demandes étaient toujours activées.

Par exemple:

[[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. 

Le serveur doit répondre avec 403 Forbidden. Au lieu de cela, il fait écho à ma demande avec un 200 OK.

En tant que test, j'ai changé le RewriteCond à% {REQUEST_METHOD}^GET

Quand je fais cela, Apache répond correctement à toutes les requêtes GET avec 403 Forbidden. Mais quand je change de TRACE, il laisse passer les requêtes TRACE. Comment puis-je faire en sorte qu'Apache cesse de répondre aux demandes TRACE?

Répondre

1

je me suis dit la bonne façon de le faire.

J'avais essayé de placer le bloc de directives de réécriture à trois endroits: dans la partie <Directory "/var/www/html"> du fichier httpd.conf, en haut de mon fichier httpd.conf, et dans /var/www/html/.htaccess fichier. Aucune de ces trois méthodes n'a fonctionné.

Enfin, cependant, j'ai essayé de mettre le bloc de code dans <VirtualHost *:80> partie de mon httpd.conf. Pour une raison quelconque, cela fonctionne quand il est placé. Là.

1

Certaines versions exigent:

TraceEnable Off

+0

Apache 2.0.52 ne prend pas en charge la directive TraceEnable –

1

Comme vous l'avez dit, cela fonctionne dans votre bloc VirtualHost. Comme vous n'avez pas montré httpd.conf je ne peux pas dire pourquoi votre tentative initiale n'a pas fonctionné - c'est sensible au contexte.

Il a échoué dans le parce que ce n'est pas vraiment pertinent là-bas, c'est généralement pour le contrôle d'accès. Si cela ne fonctionnait pas dans le fichier .htaccess, il est probable qu'apache ne le cherchait pas (vous pouvez utiliser AllowOverride pour les activer).

Questions connexes