Changsoon's Note Backend Developer

POST 요청은 GET 요청보다 보안성이 뛰어날까?

대부분 HTTP에 관한 글에는 HTTP Method를 비교를 한다.

여기에는 post 요청이 get 요청보다 보안성이 뛰어나다고 되어 있는데, 과연 그럴까?

왜 보안성이 뛰어나다고 하는 걸까?

get 요청은 데이터가 URL에 포함되므로 브라우저 기록이나 서버 로그, 방문한 페이지 등에 남을 가능성이 있다.

반면에, post 요청은 데이터가 HTTP 본문에 포함되므로 URL에 노출되지 않는다. 따라서 브라우저 기록이나 서버 로그에 직접적으로 남지 않는다.

다른 예로는, 브라우저에서 get 요청으로 전송된 데이터가 캐시된다면, 다른 사용자가 같은 브라우저를 사용할 때 민감한 정보가 노출될 수 있다는 것이 있다.

반면에 post 요청은 기본적으로 캐시되지 않는다고 한다.

따로 보안을 적용하지 않으면 그게 그거다.

위 내용은 맞는 말이지만 얼마든지 브라우저 기록으로 post 요청의 본문 내용을 확인할 수 있고, post 요청의 데이터도 캐시할 수 있다.

캐싱은 Cache-Control 헤더에서 no-store 하지 않는 이상 가능하고, post의 본문도 개발자 도구로 확인할 수 있다.

get 요청은 url에서 확인할 수 있다.

http://localhost:8080/test?password=password

post 요청은 개발자 도구에서 확인할 수 있다.

image.png

결론

get 과 post는 단순 전송 방식의 차이고, 보안성과는 연관이 크게 없다.

HTTPS나 다른 보안 요소를 적용하는 것이 보안성을 올리는 방법이다.