Apache에서 HTTP 메소드 비활성화


11

특정 HTTP 메소드 (예 : PUT 또는 TRACE)를 비활성화하고 Apache가 HTTP "405 Method not allowed"를 보내도록하려면 어떻게해야합니까?

Limit 및 LimitExcept 지시문을 시도했지만 "403 Forbidden"을 보내는 것 같습니다.

몇 개의 vhost가 있습니다. 이것은 주 httpd.conf에서 모든 호스트에 있어야합니다.

답변:


14

실제로 오류 코드를 정의하는 것이 생각보다 조금 어려워 보입니다.

그러나 한 가지 해결 방법은을 사용할 수 mod_rewrite있습니다. 불가능 해 보이는 아파치 문제의 적어도 99 %에서 mod_rewrite가 부두 춤을 제공하고 문제를 해결할 수 있다는 사실 때문에 내 머리에서 튀어 나왔습니다.

다른 모든 것이 실패하면

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

그게 아마 가장 좋은 솔루션 주위 아니라는 것을 알고,하지만 해야 종류의 일 ...


1
+1 Mod_rewrite 부두는 모든 문제를 해결합니다 (제한된 세트 만 해당).
— Chris S

6
Mod_rewrite는 모든 URL 프로세스에서 느린 정규식을 실행하여 서버 속도를 느리게합니다. 주의해서 사용하십시오.
— Marcin

감사합니다-R = 405로 응답 코드를 설정하는 좋은 트릭입니다. OPTIONS가 올바른 값을보고 할 수 있도록 더 나은 방법이 있기를 바랐지만 불가능한 것 같습니다
— Greg

[AND] 플래그를 지원하는 Apache / mod_rewrite 버전은 무엇입니까? 나는 단지 [OR] (그리고 "and"가 암묵적인 것)만을 본다 : httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
— asjo

4

추적 방법을 위해 이것을 추가 할 수 있습니다

TraceEnable off

기본 구성 파일에서


2

다시 쓰기 엔진을 사용하려면 다음을 추가하십시오.

 RewriteEngine On 

기본적으로 다시 쓰기 구성은 가상 서버에서 상속되지 않습니다. 각 가상 호스트에 RewriteEngine을 추가하십시오.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.