로그인 페이지는 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

+ Recent posts