https://www.youtube.com/watch?v=K00xh3zsof0
해당 유튜브를 보고 정리한 내용입니다.
우선 내가 아는 HTTP는 무상태다.
즉 클라이언트가 서버에 연결을 요청하면 TCP/IP 통신을 통해 가상 연결을 진행하고, 서버는 HTTP 요청을 받아서 RESPONSE를 내뱉으면 연결은 끊어진다.
그러면 현재 유저가 로그인 된 상태인지는 어떻게 알까?
로그인의 경우 크게 JWT, 세션을 사용한다. 즉 클라이언트에게 토큰이든 세션ID든 쿠키에 담아서 전달해주게 되는데, 해당 쿠키를 같이 서버로 전달해주면서 유저의 로그인 상태를 확인한다.
그럼 서버는 유저의 정보를 어디에 저장하냐? 그게 데이터베이스(DB)다.
결국 클라이언트는 쿠키로 기억, 서버는 DB로 기억하고 서로의 연결을 확인하게 된다.
근데 문제는 여기서 발생한다.
쿠키로 연결을 확인한다. 그 말은 쿠키만 알면 보안은 끝난다.
로그인이 완료되면 서버에서는 쿠키를 보내주는데, 해당 쿠키를 가로채서 HTTP 요청을 보낼 때 쿠키를 설정해서 보내면 해당 유저의 인증 정보를 가지고 요청을 보내게 된다.
이제 생각해보면 대부분의 사이트들은 내 개인정보를 보거나 수정할 때 다시 비밀번호를 요구한다.
굳이 이미 로그인했는데 왜? 라는 물음이 나올 수 있지만, 현재 서버에서 받은 쿠키는 실제 유저의 쿠키인지, 해커가 가로채서 보낸 쿠키인지 모른다. (무상태)
그렇기에 다시 한번 유저의 비밀번호를 확인하는 것이다.
결국 영상을 끝까지 보니 내가 생각하는 게 맞았다.
로그인의 유무를 확인하는 방법으로 클라이언트는 쿠키, 서버는 DB를 이용한다.
'기타' 카테고리의 다른 글
서비스에서 서비스로 트랜잭션 전파를 알아보자(궁금증) (1) | 2024.03.25 |
---|---|
GenerationType.IDENTITY는 정말로 쓰기 지연이 안 먹힐까? (0) | 2024.03.25 |
분명 JPA에서는 쿼리를 모았다가 날리는 걸로 알았는데? (0) | 2024.02.06 |
FETCH JOIN 사용하면서 깨달은 1차 캐시 (0) | 2024.01.18 |