2009-07-11 8 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).