Session & Session id
DATE : 2023/11/9
Last updated
DATE : 2023/11/9
Last updated
Cookie의 문제점을 해결하기 위해 나온 Session은
client 측이 아닌 server 측에 저장되는 데이터이다.
Client 측에 정보를 저장하는 게 문제 원인이었으니 이를 해결하기 위해
정보를 Server 측에 저장하자는 것이다.
다만, 이것 저것 server에 저장하게 되면 어떤 정보가 누구의 것인지 확인할 방법이 필요하다.
이때 session이 누구의 정보인지 식별하기 위한 정보로 session id를 사용한다.
즉 client는 직접 session 값을 보내는 것이 아니라
자신의 session 값을 가리키는 session id를 사용함으로써 자신이 인증된 사용자임을 증명하게 된다.
(1) 서버가 session id를 만들어주면 요청을 보낼 때 이를 같이 넣어 보낸다.
(2) 요청을 받은 서버는 session id를 보고 자신이 가지고 있는 정보에서 해당 id를 찾아
정보를 대조한 후 "너가 yunsoo구나? Okay!" 해주는 것이다.
즉 server에는 사용자와 관련된 정보가 저장되어 있고
client는 자신의 정보를 가리키는 식별 정보, session id를 보냄으로써
"session id가 가리키는 정보가 나야"라는 확인을 시켜 로그인을 유지하게 된다.
그렇다면 여기서 드는 의문 한 가지!
session id도 결국 Cookie로 주고 받으면 똑같이 위험한 거 아닐까? 라는 생각이 들 수 있다.
만약 session id를 Cookie처럼 단순한 값으로 사용하면 그럴 것이다.
그렇기 때문에 session id는 누구의 id가 어떻게 생겼을 지 예측하지 못하도록 Random 하게 만들어진다.
또한 일반적으로 session은 유효 시간이 그리 길지 않고 (대략 15분)
그 전에 logout 하거나 유효 시간이 지나 session이 만료되면 서버에서 해당 데이터가 사라지게 된다!
이 말은 뒤늦게 session id를 누군가 알아내도 무용지물이란 말씀!
(그렇다 보니 공격자는 예측할 필요 없이 session id 값을 통째로 탈취하려고 하는 것이다 )