로그인 페이지는 GET / POST 어떤 메서드를 사용해야 할까?
로그인 페이지를 구현하는 중에 다음과 같은 궁금한 점이 생겼습니다.
[ 로그인 흐름 ]
1) 로그인 페이지
2) 아이디 / 비밀번호를 요청 ( 로그인 요청 )
3) 사용자 식별 응답 받음
4) 메인 페이지 진입
[ 의문점 ]
여기서 로그인 요청은
1. URL 에 아이디 / 비밀번호를 담아 GET 요청을 해야할지
2. Request Body 에 아이디와 비밀번호를 담아 POST 요청을 해야할지
에 대한 의문이 생겼습니다.
[ 해결 ]
간단하게 결론부터 말하면, 원래라면 HTTPS 를 사용해야합니다.
그런데 만약 HTTPS 를 사용하지 않는다면 POST 를 사용해야합니다.
HTTPS 사용해야하는 이유
HTTP 는 텍스트 교환이므로 누군가 네트워크에서 신호 가로채면 내용이 노출되는 보안 이슈가 존재합니다.
HTTP 의 동작 과정
TCP -> HTTP
HTTPS 동작 과정
TCP -> SSL -> HTTP
모든 사이트를 HTTPS 로 하지 않는 이유
HTTP 통신하는 소켓 부분을 SSL / TLS 라는 프로토콜로 대체합니다.
그래서 암호화 과정이 거치므로 속도 저하가 발생하기 때문입니다.
POST 를 사용하는 이유
GET 요청은 서버 데이터의 상태를 변경하지 않기 때문에 쿼리를 캐싱할 수 있어
아이디와 비밀번호와 같은 정보를 쿼리에 담아 보내게 되면 보안에 취약해집니다.
ex. 다음 페이지가 로딩되거나 이동할 때 텍스트가 표시됨
반면 POST 요청은 서버 상태를 변경시키고 동일한 응답을 주며 서버를 동일한 상태로 유지하기 위해
캐싱을 하지 않기 때문에 GET 보다는 보안에 용이합니다.
ex. 5번의 로그인에 실패했을 때 6번째 요청에서 IP 차단에 대한 응답을 할 수 있음
'스터디' 카테고리의 다른 글
세션과 쿠키, JWT (0) | 2022.12.31 |
---|---|
로그인 페이지는 GET ? POST ? (2) (0) | 2022.12.04 |
logging 알아보기 (0) | 2022.11.30 |
Spring MVC (0) | 2022.11.30 |
MVC 패턴 (0) | 2022.11.28 |