`localStorage` 사용 시 보안 위험과 대안
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
보안
대상자
프론트엔드 개발자, 보안 엔지니어, 인증/인가 시스템 설계자
핵심 요약
localStorage
는 JavaScript 환경 내 모든 스크립트에 접근 가능하여 민감 데이터 유출 위험httpOnly
쿠키 +secure
및SameSite=Strict
플래그가 인증 토큰 보관에 적합- Subresource Integrity(SRI)를 사용해 외부 스크립트 조작 방지
섹션별 세부 요약
1. `localStorage`의 보안 취약점
localStorage
에 저장된 JWT, 세션 상태 등은 JavaScript 환경 내 모든 스크립트에 접근 가능- 악의적인 스크립트(분석 도구, 외부 라이브러리 등)가
localStorage.getItem("token")
을 통해 토큰을 유출 가능 - 예시:
console.log(localStorage.getItem("token"))
로 즉시 토큰 접근 가능
2. `httpOnly` 쿠키의 보안 강화
httpOnly
쿠키는 JavaScript 접근 불가 → XSS 공격에 대응 가능secure
플래그 적용 시 HTTPS 전용 전송 → HTTP로의 유출 방지SameSite=Strict
적용 시 쿠키가 외부 도메인 요청 시 전송되지 않음 → CSRF 공격 방지
3. 외부 스크립트 보안 강화 방안
- Subresource Integrity(SRI) 사용:
- SRI 해시 검증을 통해 CDN 스크립트 조작 가능성 최소화
결론
- 민감한 인증 토큰은
httpOnly
쿠키에 저장하고,secure
및SameSite=Strict
플래그를 반드시 적용 - 외부 스크립트는 SRI 해시 검증을 통해 보안 강화
- 프론트엔드는 필요한 최소 정보만 유지하고,
sessionStorage
대신localStorage
사용 자제
> 보안은 백엔드만의 문제가 아니다. 프론트엔드가 첫 번째 방어선이다.