몰?.루();
POST 요청은 GET 요청보다 보안이 뛰어나지 않다. 절대로. 본문
구글에 '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 |
---|