피드로 돌아가기
WebSocket Authentication Deep Dive — Tokens, Stateful Connections, and the CORS Bypass Nobody Warns You About
Dev.toDev.to
Security

Browser API 제약을 극복한 WebSocket Query Param 인증 및 Origin 검증 설계

WebSocket Authentication Deep Dive — Tokens, Stateful Connections, and the CORS Bypass Nobody Warns You About

K.R Yashwanth reddy2026년 6월 9일11intermediate

Context

HTTP Upgrade 요청 단계에서 Browser WebSocket API의 Custom Header 설정 불가 제약으로 인해 Authorization Header 기반 인증 체계 적용 불가함. Stateful Connection 특성상 최초 Handshake 시의 인증 보안성이 전체 세션의 안전성을 결정하는 구조적 한계 존재함.

Technical Solution

  • Authorization Header 대체 수단으로 Query Parameter를 통한 JWT 토큰 전달 방식 채택
  • WebSocket의 Stateful 특성을 활용하여 Handshake 시 1회 인증 후 세션 유지로 오버헤드 제거
  • Browser native API의 CORS Middleware 우회 특성에 따른 서버 측 Origin Header 수동 검증 로직 구현
  • 유효하지 않은 Origin 요청에 대해 TCP Socket 레벨에서 즉시 403 Forbidden 응답 및 연결 종료 처리
  • Socket.io 등 추상화 라이브러리 사용 시에도 하위 native API의 CORS Bypass 위험성을 인지한 보안 계층 설계

- Browser WebSocket API 사용 시 Authorization Header 설정 불가 여부 확인 - 토큰을 Query Parameter로 전달할 때 서버 로그 및 CDN 캐시 노출 위험 검토 - 서버 측 upgrade 이벤트 핸들러 내 ALLOWED_ORIGINS 리스트 기반의 Origin 검증 로직 필수 적용 - 최초 Handshake 단계의 Token Validation 강도 최적화

원문 읽기