안녕하세요! 오늘은 쿠키와는 사뭇 다른 세션(Session)에 대해서 알아보도록 하겠습니다.
지난 '210925 쿠키' 글에서 쿠키의 문제점으로 '보안성이 낮음!'을 손꼽았는데, 이러한 문제 때문에 쿠키에는 '사용자의 편의를 위하되, 타인에 의한 임의의 수정·삭제·도난당하는 일이 일어나더라도 큰일은 없을 수준의 정보들을 저장'한다고 얘기를 했습니다. 그렇다면 다른 누군가에게 노출되어서는 안 되는 정보들은 어디에 저장될까요?
...
이러한 정보들은 세션으로 '서버' 안에서 다뤄지게 됩니다!
그럼 본격적으로 세션이란 무엇이냐!
: 세션이란 일정 시간 동안 동일한 사용자(브라우저)로부터 오는 어떠한 요청을 하나의 '상태'로 보고 그 상태를 유지하는 기술입니다. (쿠키는 사용자 브라우저에 정보를 저장)
-> HTTP의 Stateless (무상태) 방식을 해결할 수 있겠죠?!
클라이언트와 서버의 첫 연결 시
1. 클라이언트가 서버에 request를 합니다.
2. 서버는 클라이언트의 유효성을 확인하고, 서버는 클라이언트를 식별하는 고유의 session id를 생성합니다.
3. 서버는 session id로 key와 value를 저장하는 HTTP Session을 생성합니다.
4, 5. session id를 저장하고 있는 쿠키를 생성하여 클라이언트에게 response 합니다.
(출처: https://sh77113.tistory.com/243)
위에서 알 수 있듯이 세션도 쿠키를 사용하여 값을 주고받으며 클라이언트의 상태 정보를 유지합니다.
즉, 세션에서 상태 정보를 유지하는 수단은 '쿠키'인걸 확인할 수 있습니다! 두둥;
무작정 빠른 처리를 위해 모든 정보를 쿠키에 저장한다면 쿠키는 용량이 제한되어있을뿐더러 (쿠키 표준안인 RFC 2019: 쿠키는 300개까지 만들 수 있으며, 최대 크기는 4,096바이트, 하나의 도메인에서 최대 20개까지 생성 가능), 보안성이 낮아서 추후 문제가 발생할 수 있습니다. 그렇다고 세션을 남발하게 된다면 사이트에 접속자가 많을 경우 서버에 부하가 생길 수 있기 때문에...
웹 개발자들은 사이트를 만들 때 어떤 정보는 쿠키에, 어떤 정보는 세션에 저장할지 적절한 판단을 내릴 수 있어야 합니다!
어제 쿠키를 공부하고 보니 제 친구는 쿠키를 직접 구현하고 있더군요.
저도 부지런히 공부해서 직접 쿠키를 구현해보고 글 올릴 수 있도록 하겠습니다.
화이팅!