쿠키와 세션은 개인화된 경험을 주기 위한 사용자 상태 저장 기술이다. 저장 위치, 생명주기가 다르다. 쿠키는 로컬에 존재하며 http 통신에 자동으로 포함되고 만료 기한을 설정할 수 있다. 세션은 서버에 위치하며 브라우저 종료 시 제거된다.
| 쿠키 | 세션 | |
|---|---|---|
| 저장위치 | 로컬 | 서버 |
| 생명주기 | 직접 삭제, 만료 기한 설정 | 브라우저 종료 |
| 보안성 | 낮음 | 높음 |
| 속도 | 빠름 | 느림 |
| 예시 | 사용자 설정(언어, 테마 등), 검색 기록 | 로그인, 장바구니 |
쿠키의 보안
쿠키는 클라이언트에 보관되는 파일이라서 보안성이 낮다. 그리고 HTTP 통신에 자동으로 쿠키정보가 포함되므로 보안성이 낮다.
이러한 문제를 해소할 수 있는 조치로 HttpOnly, Secure 플래그를 사용하는 것이다.
보안을 위해서 항상 플래그를 포함하고 싶지만 사용하면 안되는 경우도 있다.
HttpOnly : Javascript에서 쿠키에 접근하지 못하게 만든다. XSS 공격을 방지할 수 있지만 클라이언트에서 쿠키를 읽어야한다면 방해가 된다.
XSS( Cross-Site Scripting ) ?
Secure : HTTPS로만 통신 한다. 그러나 개발 중 로컬 환경에서는 불필요할 수 있다.