Session Cookie
Session Cookie
Cookie
- 서버에서 사용자의 컴퓨터에 저장한 데이터 파일. 브라우저를 통해 저장 및 사용이 이루어짐
- key-value 형태로 구성된 데이터이며, 서버와 브라우저는 HTTP 메시지 안에 이 쿠키를 담아 주고 받음
- 서버가 브라우저에 응답할 때
Set-Cookie
라는 응답 헤더의 항목에 쿠키를 넣어서 전달해 줌- 브라우저는 해당 쿠키를 일정 기간동안 저장함
- 만약 별도의 유효기간을 명시하지 않았다면 브라우저가 닫힐 때 사라짐
Expires
혹은Max-age
속성을 명시하면 해당 기간동안 쿠키가 유지됨
- 브라우저는 서버에 요청을 보낼 때
Cookie
항목에 쿠키를 동봉해 전송 - “이 창을 오늘 더 이상 보지 않음” 등이 쿠키 사용 예시
Cookie의 한계
- 쉽게 지워지므로 중요한 데이터를 담기에는 부적합
- 변조 및 도난되기 쉬움
- 좀비 쿠키 등 악의적인 공격의 수단으로 이용될 수 있음
Session
- 클라이언트가 서버에 접속한 상태 및 관련 정보를 세션이라고 함 (🚫)
- 세션을 이용한다면 정보를 사용자의 컴퓨터가 아닌 서버에 저장함
- 각 클라이언트가 생성한 세션은 세션 ID라는 고유의 값을 가지고, 이 값을 클라이언트에 쿠키 형태로 넘겨 줌
Session과 Cookie
쿠키와 세션은 서로 반대의 개념이 아닌, 상호 보완적인 개념. 비교한다면 쿠키만 사용하는 방법과 세션과 쿠키를 사용하는 방법에 대해 비교해야 함.
구분 | 쿠키만 사용 | 세션 사용 |
---|---|---|
사용자 정보 저장 위치 | 클라이언트 | 서버 |
쿠키의 내용 | 사용자 정보 전체 | 세션 ID |
보안 | 로컬에 저장되므로 위험 | 서버에 저장되므로 안전 |
만료 시기 | 브라우저 종료 혹은 유효 기간 만료 시 | 브라우저 종료 시 |
속도 | 비교적 빠름 | 서버에서 DB를 접근해야 하므로 느림 |
제한 | 쿠키의 개수 / 크기 제한 존재 | 서버가 허용하는 한 데이터 저장 가능 |
동접자 수에 따른 영향 | 없음 | 동접자가 많을 수록 메모리 부담 |
References
- https://www.daleseo.com/http-cookies/
- https://www.daleseo.com/http-session/
- https://velog.io/@jakezo/%EC%BF%A0%ED%82%A4Cookie-%EC%84%B8%EC%85%98Session-%ED%8A%B9%EC%A7%95-%EB%B0%8F-%EC%B0%A8%EC%9D%B4
- https://interconnection.tistory.com/74