Vô hiệu hóa các phương thức HTTP trong Apache


11

Làm cách nào tôi có thể vô hiệu hóa một số Phương thức HTTP nhất định (ví dụ PUT hoặc TRACE) và để Apache gửi HTTP "Phương thức 405 không được phép".

Tôi đã thử các chỉ thị Giới hạnGiới hạn ngoại lệ nhưng dường như chúng gửi "403 Bị cấm".

Tôi có một số vhost - điều này nên có trên tất cả chúng, trong httpd.conf chính.

Câu trả lời:


14

Có vẻ như việc xác định mã lỗi khó hơn một chút.

Tuy nhiên, một MIGHT giải pháp được sử dụng mod_rewrite. Đã bật cái đó ra khỏi đầu tôi vì thực tế là trong ít nhất 99% các vấn đề không thể tìm kiếm của Apache, mod_rewrite có thể cung cấp điệu nhảy voodoo của nó và giải quyết vấn đề của bạn.

Nếu mọi thứ khác thất bại, hãy thử một cái gì đó như

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

Tôi biết đó có lẽ không phải là giải pháp tốt nhất xung quanh, nhưng nó nên hoạt động ...


1
+1 Mod_rewrite voodoo giải quyết tất cả các vấn đề (đối với các tập hợp giới hạn của tất cả).
Chris S

6
Mod_rewrite cũng chạy regex chậm trên mọi quy trình URL, làm chậm máy chủ. Sử dụng cẩn thận.
Marcin

Cảm ơn - mẹo hay thiết lập mã phản hồi với R = 405. Hy vọng sẽ có một cách tốt hơn để TÙY CHỌN sẽ báo cáo các giá trị phù hợp nhưng tôi đoán điều đó là không thể
Greg

Phiên bản nào của Apache / mod_rewrite hỗ trợ cờ [AND]? Tôi chỉ thấy [HOẶC] (và "và" đang ẩn): httpd.apache.org/docs/civerse/mod/mod_rewrite.html#rewritecond
asjo

4

Đối với phương pháp theo dõi, bạn có thể thêm

TraceEnable off

trong tập tin cấu hình chính của bạn


2

Để kích hoạt công cụ viết lại, hãy thêm vào như sau:

 RewriteEngine On 

Xin lưu ý rằng theo mặc định, cấu hình viết lại không được kế thừa trên các máy chủ ảo. Thêm RewriteEngine On cho mỗi máy chủ ảo.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.