Session & Session id

DATE : 2023/11/9

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 id 값을 통째로 탈취하려고 하는 것이다 😞)

또한 일반적으로 session은 유효 시간이 그리 길지 않고 (대략 15분)

그 전에 logout 하거나 유효 시간이 지나 session이 만료되면 서버에서 해당 데이터가 사라지게 된다!

이 말은 뒤늦게 session id를 누군가 알아내도 무용지물이란 말씀!

Last updated