피드로 돌아가기
Your React app is one XSS away from a full account takeover
Dev.toDev.to
Security

BFF 패턴 도입을 통한 브라우저 내 Token 탈취 가능성 원천 차단

Your React app is one XSS away from a full account takeover

Neil Mason2026년 4월 28일7intermediate

Context

기존 SPA 아키텍처에서 Access Token을 localStorage나 JS 메모리에 저장하는 방식은 XSS 공격 시 Token 탈취 및 계정 탈취로 이어지는 구조적 취약점 보유. PKCE 도입이나 메모리 저장 방식만으로는 악성 스크립트에 의한 Token 유출 및 외부 서버에서의 무단 사용을 방지하기 어려운 한계 존재.

Technical Solution

  • BFF(Backend for Frontend) 패턴을 통한 Token 저장소의 서버 측 이전 설계
  • Cloudflare Workers를 사용하여 OAuth Flow(Redirect, Code Exchange, Refresh)를 서버 사이드에서 전담 처리
  • Access/Refresh Token을 Cloudflare KV에 저장하고 클라이언트에는 opaque한 Session ID만 전달하는 구조 채택
  • HttpOnly, Secure, SameSite=Lax, __Host- 접두사가 적용된 세션 쿠키를 사용하여 JS 접근을 완전히 차단
  • API 요청 시 Worker가 세션 ID로 KV에서 Token을 조회하여 Authorization Header를 주입하는 Proxy 메커니즘 구현
  • 클라이언트 사이드에서 Token 관리 로직(Storage, Refresh Scheduling, OAuth Library)을 완전히 제거하여 프론트엔드 복잡도 감소

1. 브라우저 내 JWT/Access Token 저장 여부 전수 조사 및 제거 검토

2. HttpOnly 및 __Host- 접두사 쿠키 설정을 통한 JS 접근 차단 적용

3. OAuth 흐름을 클라이언트가 아닌 서버 사이드 Proxy(BFF)에서 처리하는 구조로 전환

4. Local 개발 환경에서 Safari의 __Host- 쿠키 HTTP 차단 제약 사항 확인 및 TLS 프록시 설정

원문 읽기