로그인이 @PostMapping인 이유

Sun choi·2025년 2월 9일

NEW 지식

목록 보기
32/34

회원가입/로그인 서버 구현을 하다 문득 왜 로그인이 Postmapping이지?하는 궁금증이 생겼다. 회원가입은 Post가 당연한데 로그인은 회원가입된 정보를 가져오는 작업아닌가? Get 아닌가? 하는 생각이 들었다. (몇 번 해본 작업이라 늘 '그냥' 했었는데 게슈탈트 붕괴처럼 갑자기 응? 왜지? 싶음)
그래서 간단하게 정리해본다!

로그인이 @PostMapping인 이유

1. 보안 (Security)

로그인 시 아이디와 비밀번호 같은 민감한 정보가 요청 본문(Body)에 포함되는데, POST 방식은 본문을 사용하므로 URL에 정보가 노출되지 않음.
GET 방식은 URL에 데이터를 포함하는 쿼리 스트링을 사용하므로, 브라우저 히스토리나 로그에 아이디/비밀번호가 남을 위험이 있음.

2. RESTful 원칙

GET은 리소스를 조회할 때 사용하고, 상태를 변경하는 작업은 POST, PUT, DELETE를 사용해야 함.
로그인은 서버에서 세션을 생성하거나 토큰을 발급하는 과정이 포함되므로 리소스의 상태를 변경하는 작업에 해당함 → POST가 적절함

3. 요청 본문(Body) 활용 가능

POST 방식은 요청 본문(Body)에 데이터를 담을 수 있어, JSON 형식으로 유연하게 데이터를 보낼 수 있음.
반면, GET은 URL에 데이터를 담아야 해서 길이 제한이 있고, 구조화된 데이터 전송이 어려움.

4. 캐싱 방지

GET 요청은 기본적으로 브라우저나 중간 캐시 서버에 의해 캐싱될 가능성이 있음.
로그인 요청이 캐싱되면 보안 문제가 발생할 수 있으므로, 일반적으로 캐싱되지 않는 POST 방식을 사용함.

5. CSRF 방어

CSRF(Cross-Site Request Forgery) 공격을 방어하기 위해 로그인 요청을 POST로 처리하는 것이 일반적.
GET 방식은 CSRF 공격에 취약할 수 있으며, POST 요청은 CSRF 토큰을 활용하여 보안을 강화할 수 있음.

💡 결론

로그인은 민감한 정보를 다루고, 서버의 상태를 변경하는 작업이므로 @PostMapping을 사용하는 것이 RESTful한 설계 원칙과 보안 측면에서 적절하다.

profile
풀스택 개발자의 공부기록 📖

0개의 댓글