session

puingpuing·2021년 1월 22일
0

web_dev

목록 보기
3/3

더 미루기 전에 쓰는글..
예전부터 세션에 관해 궁금한게 생겼다.
php 로 세션 구현할 때 보면

_SESSION['userid'] = $userid;

이런 형태를 자주 볼 수 있는데, 이걸 보면서 궁금증이 생겼다.
보니, 나와 같은 궁금증을 가진 사람을 찾을 수 있었는데..

stackoverflow question

session 라는 전역 변수에 뭔가를 저장하면, 여러 사용자 정보를 못담지 않을까 하는 궁금증이었다. (왜냐하면 나중에 session 변수에 담긴 데이터를 사용할 때, 제일 마지막에 저장되는 데이터가 불릴 것이기 때문이다.)

그런데 서버에서 session 변수를 위와같이 잘 사용한다. 실제로 flask 로 간단한 웹서버를 만들어서 확인해보니, 잘 돌아간다

(php 든 flask 든 중요한건 아니다)

php session

위 내용을 보면, 이해가 가는데..
내용은 즉슨, session 변수들이 state file 에 저장된다. 그 다음, session id 가 존재하는지 체크를 하고 존재하면 해당 state file 에서 값을 가져온 후 $_SESSION 변수에 담는다.
중요한 건, client 마다 session id 가 있고 session id 마다 $_SESSION 값이 다르고 이로 인해 여러 사용자에 대한 session 들을 $_SESSION 변수를 가지고 다룰 수 있는 것이다.

언어마다 방식은 다를 건데, 핵심은 다르지 않다. 브라우저 쿠키에 있는 session 정보에 따라 저장된 session 변수 값이 다를 것이다.

flask 의 경우 client-side 방식으로 session 을 다룬다. server-side 방식으로는 flask-session package 가 잘 쓰이는거같다. client-side 방식은 쿠키과 다른점이 많지 않다. (서버에 저장되지 않고 client 가 가지고 있음.)

php 랑 다르게 session id 가 부여되는게 아니라 session 자체가 secret key 로 암호화되어 client 에게 전송된다.

secret key 로 복호화해보면, session object 가 그대로 나옴.

flask session
flask session2

profile
happy hacking

0개의 댓글