HTTP는 요청 메소드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타낸다. 각각의 메소드는 서로 다른 의미를 구현하지만, 일부 기능은 메소드 집합 간에 서로 공유하기도 한다.
* HTTP 요청 Method의 종류
* GET
서버에 존재하는 정보를 요청한다. 이 때 반환되는 정보는 정보가 아니라 특정 정보(리소스)의 표시(표현)이다. GET을 사용하는 요청은 오직 데이터를 받기만 한다. 캐싱을 수행하기 때문에 캐싱되지 않는 요청은 GET 요청 메소드가 적합하지 않을 수 있다.
* HEAD
GET 메소드의 요청과 동일한 응답을 요구하지만, RequestBody를 포합하지 않는다. header만 가져온다.
* POST
서버에 정보를 생성하는 것을 요청한다. 서버 상태의 변화를 일으킨다. RequestBody에 요청하는 데이터를 담아 전송한다.
* PUT
서버에 존재하는 데이터를 수정한다. 만약 데이터가 존재하지 않으면 수정한다.
* DELETE
서버에 존재하는 데이터를 삭제한다.
* CONNECT
목적 데이터로 식별되는 서버로의 터널? 연결을 맺는다.
* OPTIONS
해당 URI에 대해 서버가 허용하는 메서드를 확인할 때(목적 데이터와의 통신을 설정할 때) 쓰인다.
* PATCH
서버에 존재하는 데이터의 부분만을 수정한다.
불필요한 메소드는 허용하지 않고 필요한 메소드만 허용하는 whitelist 방식으로 관리해야 한다. 왜냐면 OPTIONS 메소드를 사용하면 서버가 허용하는 메소드를 확인할 수 있는데 이 때 PUT, DELETE, HEAD와 같은 메소드를 사용하여 공격을 할 수 있기 때문이다. 문제되는 HTTP Method를 제한하면 된다. 사용하지 않으면서 여러 메소드들을 허용하고 허용되는 메소드들을 노출하는 것은 보안 취약점이기 때문이다.
출처 - https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
'CS > network' 카테고리의 다른 글
HTTP(Hyper Text Transfer Protocol) (0) | 2021.07.24 |
---|---|
Network Layer의 Protocols (0) | 2021.06.23 |
슬라이딩 윈도우 프로토콜 (0) | 2021.05.11 |
Load Balancing(로드 밸런싱) (0) | 2021.05.09 |
URI와 URL, URN (0) | 2021.05.08 |