Désactiver les méthodes HTTP dans Apache


11

Comment puis-je désactiver certaines méthodes HTTP (par exemple PUT ou TRACE) et demander à Apache d'envoyer un HTTP "Méthode 405 non autorisée".

J'ai essayé les directives Limit et LimitExcept mais elles semblent envoyer "403 Forbidden".

J'ai plusieurs vhosts - cela devrait être sur tous, dans le httpd.conf principal.

Réponses:


14

Il semble vraiment que la définition du code d'erreur soit un peu plus difficile qu'elle ne devrait l'être.

Cependant, une solution de contournement POURRAIT utiliser le mod_rewrite. Je l'ai sorti de ma tête en raison du fait que dans au moins 99% des problèmes Apache d'aspect impossible, mod_rewrite peut fournir sa danse vaudou et résoudre votre problème.

Si tout le reste échoue, essayez quelque chose comme

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^GET [AND]
RewriteCond %{REQUEST_METHOD} !^POST 
RewriteRule .* /yourerrordocuments/405.html [R=405,L] 

Je sais que ce n'est probablement pas la meilleure solution, mais cela devrait fonctionner ...


1
+1 Mod_rewrite voodoo résout tous les problèmes (pour des ensembles limités de tous).
Chris S

6
Mod_rewrite exécute également une expression régulière lente sur chaque processus d'URL, ce qui ralentit le serveur. Utiliser avec précaution.
Marcin

Merci - belle astuce pour définir le code de réponse avec R = 405. J'espérais qu'il y aurait une meilleure façon pour OPTIONS de rapporter les bonnes valeurs mais je suppose que ce n'est pas possible
Greg

Quelle version d'Apache / mod_rewrite prend en charge l'indicateur [AND]? Je vois seulement [OU] (et "et" étant implicite): httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
asjo

4

Pour la méthode de trace, vous pouvez ajouter ceci

TraceEnable off

dans votre fichier de configuration principal


2

Pour activer le moteur de réécriture, ajoutez les éléments suivants:

 RewriteEngine On 

Veuillez noter que par défaut, les configurations de réécriture ne sont pas héritées sur les serveurs virtuels. Ajoutez RewriteEngine On à chaque hôte virtuel.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.