Wyłącz metody HTTP w Apache


11

Jak mogę wyłączyć niektóre metody HTTP (na przykład PUT lub TRACE) i pozwolić Apache wysłać HTTP „Metoda 405 niedozwolona”.

Próbowałem dyrektyw Limit i LimitExcept, ale wydaje się, że wysyłają komunikat „403 Forbidden”.

Mam kilka vhostów - to powinno być na wszystkich z nich, w głównym httpd.conf.

Odpowiedzi:


14

Naprawdę wydaje się, że zdefiniowanie kodu błędu jest nieco trudniejsze niż powinno.

Jednak jednym obejściem MOŻE być użycie mod_rewrite. Wyskoczyłem z głowy, ponieważ w co najmniej 99% niemożliwych problemów Apache mod_rewrite może zapewnić swój taniec voodoo i rozwiązać twój problem.

Jeśli wszystko inne zawiedzie, spróbuj czegoś takiego

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

Wiem, że to prawdopodobnie nie jest najmilsze rozwiązanie, ale powinno to trochę zadziałać ...


1
+1 Mod_rewrite voodoo rozwiązuje wszystkie problemy (dla wszystkich ograniczonych zestawów).
Chris S

6
Mod_rewrite uruchamia również powolne wyrażenie regularne na każdym procesie URL, co spowalnia serwer. Używaj ostrożnie.
Marcin

Dzięki - fajna sztuczka ustawiająca kod odpowiedzi z R = 405. Miałem nadzieję, że będzie lepszy sposób, aby OPCJE zgłosiły prawidłowe wartości, ale myślę, że nie jest to możliwe
Greg

Która wersja Apache / mod_rewrite obsługuje flagę [AND]? Widzę tylko [LUB] (i „i” są niejawne): httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
asjo

4

W przypadku metody śledzenia możesz to dodać

TraceEnable off

w głównym pliku konfiguracyjnym


2

Aby włączyć silnik przepisywania, dodaj:

 RewriteEngine On 

Należy pamiętać, że domyślnie konfiguracje przepisywania nie są dziedziczone na serwerach wirtualnych. Dodaj RewriteEngine On do każdego wirtualnego hosta.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.