Вимкнути методи HTTP в Apache


11

Як я можу відключити деякі методи HTTP (наприклад, PUT або TRACE) і Apache надіслати HTTP "Метод 405 не дозволений".

Я спробував обмеження Limit і LimitExcept, але вони, схоже, надсилають "403 Forbidden".

У мене є кілька vhosts - це повинно бути через усі вони, в основному httpd.conf.

Відповіді:


14

Дійсно здається, що визначити код помилки трохи складніше, ніж слід.

Однак, одним способом МОЖЕ бути використання mod_rewrite. У мене це вискочило з голови через те, що принаймні 99% проблем, що виглядають на Apache, mod_rewrite може забезпечити танець вуду та вирішити вашу проблему.

Якщо все інше не вдається, спробуйте щось подібне

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

Я знаю, що це, мабуть, не найприємніше рішення навколо, але це має спрацювати ...


1
+1 Mod_rewrite voodoo вирішує всі проблеми (для обмежених наборів усіх).
Chris S

6
Mod_rewrite також виконує повільний регулярний вираз у кожному процесі URL-адреси, що уповільнює роботу сервера. Використовуйте обережно.
Марцін

Спасибі - приємна хитрість встановлення коду відповіді з R = 405. Сподівався, що буде кращий спосіб, щоб ВАРІАНТИ повідомили правильні значення, але, мабуть, це неможливо
Грег

Яка версія Apache / mod_rewrite підтримує прапор [AND]? Я бачу лише [АБО] (і "та" неявні): httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
asjo

4

Для методу слідування ви можете додати це

TraceEnable off

у вашому головному файлі конфігурації


2

Щоб увімкнути механізм перезапису, додайте наступне:

 RewriteEngine On 

Зверніть увагу, що конфігурації перезапису за замовчуванням не успадковуються на віртуальних серверах. Додайте RewriteEngine On до кожного віртуального хоста.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.