목차
http method 종류
GET
특정 리소스의 표시를 요청한다.
GET을 사용하는 요청은 오직 데이터를 받기만 한다.
HEAD
GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않는다.
POST
특정 리소스에 엔티티를 제출할 때 쓰인다.
이는 종종 서버의 상태의 변화나 부작용을 일으킨다.
PUT
목적 리소스 모든 현재 표시를 요청 payload로 바꾼다.
DELETE
특정 리소스를 삭제한다.
CONNECT
목적 리소스로 식별되는 서버로의 터널을 맺는다.
OPTIONS
목적 리소스의 통신을 설정하는 데 쓰인다.
TRACE (en-US)
목적 리소스의 경로를 따라 메시지 loop-back 테스트를 한다.
PATCH
리소스의 부분만을 수정하는 데 쓰인다.
http method 차단
일단 GET과 POST는 사이트에 필수적으로 사용되는 method이고, HEAD는 봇들이 사용하는 것 같은데 구글에서 사용할 수도 있을 것 같다.
나머지는 다 차단해도 괜찮을 것 같지만 PATCH는 잘 모르겠어서 일단 차단하고 나중에 문제가 되면 다시 수정하려고 한다.
서버 블록에서 method를 차단하려면 서버 블록에 아래의 내용을 추가한다.
GET/HEAD/POST를 제외한 메서드는 404를 반환한다.
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 404;
}
location 블록에서 차단하려면 해당 블록에 아래의 내용을 추가한다.
limit_except GET HEAD POST {
deny all;
}
method 차단 시 발생하는 문제
method 차단 후 NodeBB에서 카테고리를 생성하고 삭제를 해봤는데, 생성은 POST여서 문제가 없지만 삭제는 DELETE이기 때문에 삭제가 되지 않는다.
거기다 카테고리의 순서 변경에도 PUT을 사용하기 때문에 변경이 되지 않는다.