본문 바로가기
Front-end/Web

[Apache] OPTIONS, HEAD 등 불필요 Method 막기

by JiGyeong 2021. 10. 21.

httpd.conf 또는 httpd-ssl.conf 파일에서

<Directory "/apache/apache24/htdocs"> 또는 <VirtualHost *:443>  밑에 추가한다

(위 경로는 적용하고 싶은 웹소스가 있는 경로이다)

 

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(DELETE|TRACE|OPTIONS|PATCH|HEAD)$
RewriteRule .* - [F]

 

* RewirteEngine on : Rewirte Engine 을 켠다

* RewirteCond : RewriteCond에서 설정한 패턴과 일치하는 경우에 다음에 오는 RewriteRule들을 실행한다.

해당 내용은 REQUEST METHOD 가 DELETE|TRACE|OPTIONS|PATCH|HEAD일 경우 다음 룰을 적용한다.

* RewirteRule : 적용할 룰, 여기서는 해당 메소드는 403 forbidden 시켰다 

 

문법: RewriteRule (Pattern) (Substitution) [flag]

* 사용가능한 서버변수
HTTP Headers connection & request server internals date & time specials
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST  : 요청된 URL 전체
HTTP_PROXY_CONNECTION
HTTP_ACCEPT  REMOTE_ADDR
REMOTE_HOST
REMOTE_PORT
REMOTE_USER
REMOTE_IDENT
REMOTE_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE  DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE  TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME  API_VERSION
THE_REQUEST
REQUEST_URI : 요청된 URL중 도메인을 뺀 부분
REQUEST_FILENAME
IS_SUBREQ
HTTPS

 

* 플래그(flag) [참고 : http://httpd.apache.org/docs/current/rewrite/flags.html ]
F | forbidden 요청페이지를 403 에러 페이지로 redirect 시킴
G | gone 요청페이지를 410 에러 페이지로 redirect 시킴
L | last 다음의 Rule을 무시하고 종료
C | chain 결과를 다음 Rule의 input값으로 넘김
N 새로운 Rule이 시작
R 무조건 Redirection 시킴
NC 대소문자를 구별하지 않음
OR OR
QSA Cond의 내용을 지난결과에 덧붙임
NE 출력문자에 특수문자가 HexCode가 있는경우
PT | passthrough : 강제적으로 결과 URI를 기존의 입력된 URL의 URI로 사용한다. 마치 Alias 나 Redirect 처럼 사용된다.
 예)
 Alias /icons /usr/local/apache/icons
 RewriteRule /pics/(.+)\.jpg /icons/$1.gif [PT]
 PT 플래그의 생략하면 Alias가 무시되어진다. 그 결과 'File not found' 라는 에러가 뿌려지게 된다.
 PT 플래그는 L플러그를 의미한다: Rewriting 은 다음 프로세싱 단계로 넘어가기 위해 정지 된다.
 PT 플래그는 <Directory>섹션 혹은 .htaccess 파일에서 동작한다.
$1,$2 ... RewriteCond 나 RewriteRule 에 string 값으로 (.*) 같은 변형 될수 있는 값들을 지정했을때 사용자로 부터 입력된 값이 $1 , $2 ... 이런식으로 변수가 된다.