Cookie
특징
- XSS 공격으로부터 상대적으로 안전
- 만료 기간 존재
- 영구 쿠키와 세션 쿠기 두 종류 존재.
한계
- CSRF 공격에 상대적으로 취약.(SameSite, Refere 검증으로 방어가능)
- 작은 저장용량 (5kb)
보완책
- HttpOnly Cookie 옵션으로 XSS 방어(부분적)
LocalStorage
특징
- CSRF 공격에 안전함
- 만료 기간 없음
- 상대적으로 큰 저장용량(최대 5MB)
- 불필요한 서버 트래픽 감소가능(모든 HTTP 요청에 주고받을 필요 없음)
한계
- XSS 공격에 취약하다.
- 문자열만 저장가능(JSON 직렬화 과정 필요)
- 특정 브라우저 미지원, 로컬스토리지 설정 off시 에러 발생가능
보완책
- 엄격한 Sanitze로 JS 코드 삽입 비허용.
(sanitize-html, DOMPurify)
결론
Cookie든 Local storage든 어느 곳에 데이터를 저장하나
보안상 취약점이 완벽히 해결되지는 않는다.
하지만 프로젝트의 규모가 커질수록 XSS 방어보다 CSRF를 방어하는 것이 좀 더 용이하기 때문에 현재 Cookie 좀 더 사용되는 추세로 보인다.