몰?.루();

POST 요청은 GET 요청보다 보안이 뛰어나지 않다. 절대로. 본문

프로그래밍/웹, 리액트

POST 요청은 GET 요청보다 보안이 뛰어나지 않다. 절대로.

toonraon 2024. 9. 8. 03:42

구글에 'GET POST 보안'이라고 검색하면 많은 블로그에서 POST가 보안이 뛰어나다고 설명하고 있다.

하지만 절대 POST가 보안이 뛰어나지 않다.

 

애초에 GET과 POST는 보안의 개념과는 거리가 멀다.

그저 데이터를 전송할 때 어떻게 하느냐의 차이일 뿐이다.

 

GET는 queryString에 모든 파라미터를 담아 전송하지만, POST는 body에 모든 파라미터를 담아 전송한다.

 

그리고 body의 정보는 크롬 개발자 도구 - Network 탭에만 들어가도 다 보인다.

 

위는 쿠팡에서 로그인 버튼을 눌렀을 때 전송된 패킷이다.

body 부분에 password라고 당당히 찍혀서 전송되는 걸 볼 수 있다.

 

즉, 중간자가 그냥 해당 패킷을 감청하면 떡하니 비밀번호가 나오는 거다.

 

그럼에도 불구하고 쿠팡이 당당하게 그냥 비밀번호를 보내는 이유는, https를 믿기 때문이다.

어차피 TLS 인증서가 다 지켜줄 거니까.

괜히 쿠팡이 Sectigo 같은 CA에 돈을 지불해가면서 TLS 인증서를 발급받아 쓰는 게 아니다.

 

 

물론 그럼에도 불구하고 네이버 같은 곳은 개인적인 암호화 기술까지 곁들이기도 한다.

네이버는 아무래도 규모가 크다보니까 이렇게까지 해놓은듯.

저걸 서버쪽에서 받아서 서버는 자신들의 비밀키로 복호화를 한 뒤, 해싱해서 DB에 저장하게 될 것이다.

 

물론 이렇게 하면 당연히 암호화를 처음 구현할 때 코스트도 생기고,

암호화키를 관리하는 비용도 생기고,

서버에서 암호를 복호화하고 검증하는 과정이 추가로 들어가므로 속도면에서도 불리하다.

 

그럼에도 불구하고 보안을 더 중요하게 생각하기 때문에 인증서가 있음에도 불구하고 개인적으로 암호화를 해서 보내는 것. 양쪽 방식 다 얻는 것이 있고 잃는 것이 있는 셈이다.

 

아무튼 post 방식 자체로는 보안성이 없고, 애초에 보안과 관련된 개념도 아니다.

그냥 post 방식으로 보내면 어차피 request body에 다 찍혀있지만,

요즘은 https 를 통해 데이터 패킷 전체 자체를 암호화해서 보내기 때문에 평문을 보내도 문제가 되지 않는다.

'프로그래밍 > 웹, 리액트' 카테고리의 다른 글

HTML <noscript>태그는 왜 있을까  (0) 2024.04.02
Comments