Desativar métodos HTTP no Apache


11

Como posso desabilitar certos métodos HTTP (por exemplo, PUT ou TRACE) e fazer com que o Apache envie um HTTP "405 Method not allowed".

Eu tentei as diretivas Limit e LimitExcept, mas elas parecem enviar "403 Proibido".

Eu tenho vários fantasmas - isso deve estar em todos eles, no principal httpd.conf.

Respostas:


14

Parece realmente que definir o código de erro é um pouco mais difícil do que deveria ser.

No entanto, uma solução alternativa pode estar usando o mod_rewrite. Isso saiu da minha cabeça devido ao fato de que em pelo menos 99% dos problemas de aparência impossível do Apache, mod_rewrite pode fornecer sua dança vodu e resolver seu problema.

Se tudo mais falhar, tente algo como

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

Eu sei que provavelmente não é a melhor solução, mas deve funcionar ...


1
+1 O modoodrew vodu resolve todos os problemas (para conjuntos limitados de todos).
Chris S

6
Mod_rewrite também executa regex lento em todos os processos de URL, o que torna o servidor lento. Use com cuidado.
Marcin

Obrigado - bom truque para definir o código de resposta com R = 405. Estava esperando que haveria uma maneira melhor de modo OPÇÕES iria relatar os valores corretos, mas eu acho que não é possível
Greg

Qual versão do Apache / mod_rewrite suporta o sinalizador [AND]? Eu só vejo [OR] (e "e" sendo implícito): httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
asjo

4

Para o método de rastreamento, você pode adicionar este

TraceEnable off

no seu arquivo de configuração principal


2

Para habilitar o mecanismo de reescrita, adicione o seguinte:

 RewriteEngine On 

Observe que, por padrão, as configurações de reescrita não são herdadas nos servidores virtuais. Adicione RewriteEngine On a cada host virtual.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.