tech blog

GET vs POST

FrontEnd 개발자 준비생 최현우 2023. 7. 23. 14:55
728x90

용어해설은 밑에 있습니다(본문 글에서 파란색으로 표시한 용어들). 참고하면서 읽어주세요!

1. 요약 정리


GET(기본값)

 

  • url에 포함되어 전달
  • 문자열만 전달가능
  • 길이제한 O
  • 멱등성이 있다.
    GET 메소드는 주로 데이터를 
    읽거나(Read) 검색(Retrieve)할 때에 사용됨
    (GET요청으로 목록을 불러옵니다. 이 행위를 여러 번 수행한다고, 서버의 상태가 변하지도 않고 //단순히 조회만 하므로//, 같은 효과를 기대할 수 있습니다. //요청한 데이터 목록을 조회하는 효과//)

POST

 

  • body에 숨겨져서 전달
  • 문자열 + 바이너리
  • 길이제한 X
  • 멱등성이 없다.
    POST 메소드는 주로 새로운 리소스를 생성(create) 할 때 사용됨
    (데이터를 가져오기보다, 서버의 데이터를 수정하는 목적)

 

2. 추가 조사


1️⃣ 보안성 차이 (?)

get과 post의 보안성에 대해 공부하다가 어떤 블로그를 봤다. 그 블로그에는  post가 get보다 보안성이 좋은게 아니라는 글귀가 있었다. 하지만 그 이유에 대해서는 설명이 없었다. 그게 궁금해서 한국어로 구글링을 해봤지만, 정확하고 상세한 답변은 없었다. 그래서 영어로 조금 더 조사를 진행해봤다. 그랬더니 quora에서 아래와 같은 게시글을 찾을 수 있었고, 나와 같은 궁금증을 가진 사람이 있을 것 같아 간략히 정리해보았다. 

 

(게시글 원문을 읽어보고 싶으신 분은 아래 링크를 보면 됩니다.)

 

What is the point of a GET request when using a POST is more secure?

Answer (1 of 5): In a GET request the data being sent to Server is in the URL as Query Param and in case of POST request the data (or the payload) is added to request body. In either case, the data is not secure unless SSL/Https is enabled where the POST d

www.quora.com

 

결론) 보안상 근본적인 차이가 없음

 

GET 요청과 POST 요청의 주요 차이점은 즉각적인 가시성(imadiate visibility)이다. 말그대로 즉각적으로 눈에 보이냐 안보이냐의 차이이다. 보안성의 차이라고 보기에는 어렵다. 왜냐하면, HTTPS를 사용하지 않으면 두가지 모두 보안에 취약한 건 마찬가지이기 때문이다. 

 

2️⃣ 속도

빠른 건 맞다. 하지만 왜 빠른지 알아야 하는데, GET방식의 요청은 캐싱(한번 접근 후, 또 요청할 시 빠르게 접근하기 위해 데이터를 저장시켜 놓는다.) 때문에 빠른 것이다.

 

3️⃣ 로그

GET 방식의 요청은 브라우저 히스토리에 남는다. 반면, POST 방식의 요청은 브라우저 히스토리에 남지 않는다.

 

3. 용어해설


🙌바이너리 : binary와 text로 구분하는데, 이 구분법으로 보자면 사람이 알아볼 수 있는 파일과, 컴퓨터가 알아볼 수 있는 파일 정도로 구분할 수 있다.

 

🙌멱등성 : 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.

이 멱등성을 HTTP Method에 적용하면 다음과 같은 의미를 가진다.
동일한 요청을 1번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 가지고, 서버의 상태도 동일하게 남을 때 해당 HTTP Method가 멱등성을 가진다고 한다.
즉 멱등성이 보장되는 메서드는 서버의 상태를 변경시킬 수 없다. 

 

🙌캐싱 : 데이터에 한번 접근 후, 또 요청할 때 빠르게 접근하기 위해서 레지스터에 저장해 놓는 것.

 

🙌레지스터: CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치이다.

 

4. 느낀점


GET과 POST가 근본적인 보안성 차이가 없는 이유가 HTTPS의 사용 유무라고 하는데,

HTTPS란 그럼 무엇일까 궁금해졌다. 추가적으로 HTTPS에 대해 조사해볼 계획이다.