Deshabilitar métodos HTTP en Apache

11

¿Cómo puedo desactivar ciertos métodos HTTP (por ejemplo, PUT o TRACE) y hacer que Apache envíe un HTTP "Método 405 no permitido"?

He intentado las directivas Limit y LimitExcept pero parecen enviar "403 Prohibido".

Tengo varios vhosts, esto debería estar en todos ellos, en el httpd.conf principal.

Greg
fuente

Respuestas:

14

Realmente parece que definir el código de error es un poco más difícil de lo que debería ser.

Sin embargo, una solución podría estar utilizando mod_rewrite. Me lo quitó de la cabeza por el hecho de que en al menos el 99% de los problemas de Apache de aspecto imposible mod_rewrite puede proporcionar su danza vudú y resolver su problema.

Si todo lo demás falla, intente algo como

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

Sé que probablemente no sea la mejor solución, pero debería funcionar ...

Janne Pikkarainen
fuente
1
+1 Mod_rewrite vudú resuelve todos los problemas (para conjuntos limitados de todos).
Chris S
66
Mod_rewrite también ejecuta expresiones regulares lentas en cada proceso de URL, lo que ralentiza el servidor. Usar con precaución.
Marcin
Gracias, buen truco para configurar el código de respuesta con R = 405. Esperaba que hubiera una mejor manera para que OPTIONS informara los valores correctos, pero supongo que no es posible
Greg
¿Qué versión de Apache / mod_rewrite admite el indicador [AND]? Solo veo [OR] (y "y" siendo implícito): httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
asjo
4

Para el método de rastreo, puede agregar esto

TraceEnable off

en su archivo de configuración principal

A.M
fuente
2

Para habilitar el motor de reescritura, agregue lo siguiente:

 RewriteEngine On 

Tenga en cuenta que, de forma predeterminada, las configuraciones de reescritura no se heredan en los servidores virtuales. Agregue RewriteEngine On a cada host virtual.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
Puntero nulo
fuente