RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
※ apache 1.3.33과 2.0.54 이전버전
Apache 1.3.34과 2.0.55 이후 버전에는 「TraceEnable」가 서포트되고 있어 상기와 같이 간단히 TRACE메소드를 무효로 할 수 있지만,
이전 버전(1.3.33과 2.0.54)을 사용하고 있는 경우에는「mod_rewire」를 사용하는 방법이 있다.
이 방법은 「TraceEnable」과는 달리 TRACE메소드가 허가되고 있는 것처럼 보이지만, 내부 처리에 의해 무효화하는 방법이다.
우선, 「mod_rewrite」가 유효하게 되어 있는지 확인한다. 무효로 되어 있다면 유효하게 할 것.
다음의 항목이 httpd.conf에 들어 있으면 된다.
LoadModule rewrite_module libexec/mod_rewrite.so
AddModule mod_rewrite.c
위의 부분이 확인되었다면, 적당한 부분에
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
</IfModule>
과 같이 기술하고, Apache를 재기동한다.
이것으로 TRACE메소드는 유효하게 되어 있지만, 클라이언트로부터 송신할 수 없게 된다.
예를 들어 TRACE메소드를 송신한 경우
- 적용 전
telnet 192.168.0.201 80
TRACE / HTTP/1.1
Host:localhost
HTTP/1.1 200 OK
Date: Tue, 11 Jul 2006 10:57:30 GMT
Server: Apache/1.3.12 (Unix)
Transfer-Encoding: chunked
Content-Type: message/http
TRACE / HTTP/1.1
Host: localhost
- 적용 후
HTTP/1.1 403 OK