Désactiver la méthode de demande TRACE sur Apache / 2.0.52

Par défaut, Apache 2.0.52 répondra à toute demande HTTP TRACE reçue. Il s’agit d’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#news

J’essaie de désactiver les requêtes TRACE en suivant les instructions affichées dans la page liée à ci-dessus. J’ai ajouté les lignes de code suivantes à mon fichier http.conf et j’ai redémarré apache:

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

Cependant, lorsque j’envoie une demande TRACE à mon serveur Web, il semble ignorer les règles de réécriture et répond comme si les requêtes TRACE étaient toujours activées.

Par exemple:

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

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

En guise de test, j’ai remplacé RewriteCond par% {REQUEST_METHOD} ^ GET

Lorsque je fais cela, Apache répond correctement à toutes les requêtes GET avec 403 Forbidden. Mais quand je reviens à TRACE, cela permet toujours aux requêtes TRACE.

Comment puis-je demander à Apache de ne plus répondre aux requêtes TRACE?

Certaines versions nécessitent:

TraceEnable Off

J’ai trouvé la bonne façon de le faire.

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

Finalement, j’ai essayé de mettre le bloc de code dans partie de mon httpd.conf. Pour une raison quelconque, cela fonctionne quand il est placé. Là.

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é – elle est contextuelle.

Il a échoué dans le parce que ce n’est pas vraiment pertinent là-bas, qui est généralement pour le contrôle d’access. 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).