IT 이야기/네트워크,보안

HTTP GET vs POST 메소드

필넷 2009. 11. 20. 07:25
반응형

HTTP 메소드는 HEAD, TRACE, PUT, DELETE, CONNECT, GET, POST 가 있다. 이중에서 대표적으로 사용되는 것이 GET 과 POST 메소드이다.

HTTP GET 메소드


GET은 일반적으로 특정 URL(Uniform Resource Locators, 자원의 경로)의 자원을 요청할 때 사용된다. 즉, 일반적인 HTML페이지, 이미지, 텍스트파일 등의 자원에 대한 요청을 한다. 그리고 간단한 파라메터를 URL상에 표현하여 서버에 넘겨줄 수가 있다. 아래 예는 네이버에서 'feelnet' 이라는 키워드로 검색할 때 주소창에 보여지는 URL이다.

http://search.naver.com/search.naver?where=nexearch&query=feelnet&x=0&y=0&sm=top_hty&fbm=0

붉은색이 실제 URL이고 파란색이 파라메터와 값의 쌍이다. '?'는 URL와 파라메터의구분자이고 '&'은 각각의 파라메터명과 값의 쌍을 구분하는 구분자이다.

예에서 볼 수 있듯이 검색어로 입력한 'feelnet' 가 주소창에 그대로 보인다. 따라서 로그인 페이지와 같은 작업을 GET 방식으로 구현한다면 보안상의 문제가 생길 수 있음을 알 수 있다.

HTTP 의 스펙상 GET 메소드는 멱등 메소드[각주:1]이다. 즉, 동일한 요청이 부작용이 없이 두번 이상 이루어질 수 있다는 의미이며 결제처리와 같은 하나의 트랙잭션이 중복 실행되어서는 안되는 작업에는 이론적으로는 사용되지 않는 것이 바람직하다.

따라서 일반적으로 GET 메소드는 서버의 자원을 요청할 때 사용되고 서버의 상태를 변경하지 않는다.[각주:2]

HTTP POST 메소드


POST 메소드는 GET 메소드와 달리 파라메터가 URL상에 표현되지 않고 HTTP Body에 입력된다. 따라서 주소창에 파라메터의 값이 보이지 않고, HTTP Body에 데이터가 붙기때문에 데이터의 크기에 제한이 없다.

일반적으로 폼에 입력한 데이터를 서버에 전송하여 상태를 변경하는 작업[각주:3]에는 대부분 POST 방식이 사용된다.

HTML <form 태그의 기본 메소드는 GET 방식이다. 따라서 POST 방식으로 전송하고자 한다면 반드시 <form method="POST" 로 명시해주어야 한다.

 

이 글은 스프링노트에서 작성되었습니다.

  1. HTTP 메소드중에서 멱등 메소드는 GET, HEAD, PUT이다. [본문으로]
  2. 앞서 말했듯이 바람직하지 않을뿐이며 개발자가 구현하기 나름이다. [본문으로]
  3. 예를들면, DB의 입력, 삭제, 변경 등의 작업이다. [본문으로]
반응형

'IT 이야기 > 네트워크,보안' 카테고리의 다른 글

전자서명 쉽게 이해하기  (2) 2010.03.10
공인인증체계 쉽게 이해하기  (0) 2010.03.10
OSI 7 Layer  (2) 2009.06.12
무선통신보안기술  (5) 2009.05.14
PKI(Public Key Infrastructure)  (12) 2009.04.16