Disabilita i metodi HTTP in Apache


11

Come posso disabilitare alcuni metodi HTTP (ad esempio PUT o TRACE) e fare in modo che Apache invii un HTTP "Metodo 405 non consentito".

Ho provato le direttive Limit e LimitExcept ma sembrano inviare "403 Forbidden".

Ho diversi vhosts - questo dovrebbe essere attraverso tutti loro, nel httpd.conf principale.

Risposte:


14

Sembra davvero che definire il codice di errore sia un po 'più difficile di quanto dovrebbe essere.

Tuttavia, una soluzione alternativa potrebbe essere l'utilizzo di mod_rewrite. Me ne sono uscito di testa a causa del fatto che in almeno il 99% dei problemi di Apache dall'aspetto impossibile mod_rewrite può fornire la sua danza voodoo e risolvere il tuo problema.

Se tutto il resto fallisce, prova qualcosa di simile

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

So che probabilmente non è la soluzione migliore in circolazione, ma dovrebbe funzionare ...


1
+1 Mod_rewrite voodoo risolve tutti i problemi (per serie limitate di tutti).
Chris S,

6
Mod_rewrite esegue anche regex lento su ogni processo URL, che rallenta il server. Usare con cautela.
Marcin,

Grazie - bel trucco che imposta il codice di risposta con R = 405. Speravo che ci sarebbe stato un modo migliore, quindi OPTIONS avrebbe riportato i giusti valori, ma immagino che non sia possibile
Greg

Quale versione di Apache / mod_rewrite supporta il flag [AND]? Vedo solo [OR] (e "e" implicito): httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
asjo

4

Per il metodo trace puoi aggiungere questo

TraceEnable off

nel tuo file di configurazione principale


2

Per abilitare il motore di riscrittura, aggiungere quanto segue:

 RewriteEngine On 

Si noti che per impostazione predefinita, le configurazioni di riscrittura non sono ereditate su server virtuali. Aggiungi RewriteEngine On a ciascun host virtuale.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.