JWT 토큰의 저장 방식

금은체리·2024년 6월 23일
0

프로젝트 배경: 서버사이드 렌더링을 활용한 농촌 일자리 플랫폼 구축 프로젝트에서 초기에는 사용자 인증 정보를 HTTP 헤더를 통해 JWT 토큰 형태로 전송하였습니다. 이 방식은 사용자가 매 API 요청마다 토큰을 수동으로 첨부해야 하는 불편함과 함께, 웹 애플리케이션의 보안 취약점이 노출되는 문제가 있었습니다.

변경 요청: 프런트엔드 개발자로부터, 보안을 강화하고 클라이언트의 토큰 관리를 자동화할 수 있는 방안으로 쿠키 기반의 토큰 관리를 제안받았습니다. 특히, 쿠키를 통해 HTTPOnly 및 Secure 플래그를 설정하여 XSS 공격으로부터 토큰을 보호하고 HTTPS 통신만을 통해 토큰이 전송되게 할 수 있음을 지적받았습니다.

기술적 고민: 토큰을 쿠키에 저장하기로 결정하기 전, 주요 보안 위험 중 하나인 CSRF 공격 가능성을 고려했습니다. 이를 해결하기 위해, CSRF 토큰을 도입하거나 쿠키의 SameSite 속성을 조정하는 방안을 심도 있게 검토했습니다.

구현 경험:

  • JWT 토큰 생성 및 쿠키 설정: 인증 후, 생성된 JWT 토큰을 Set-Cookie 헤더를 통해 클라이언트에 전달했습니다. 쿠키는 HTTPOnly, Secure, SameSite=Strict 속성을 설정하여 보안을 강화했습니다. 이는 개발 초기에 스크럼을 통한 시뮬레이션을 통해 여러 보안 설정의 효과를 확인한 결과를 바탕으로 결정되었습니다.
  • 토큰 인증 및 쿠키 관리: 모든 요청에서 쿠키를 통해 자동으로 토큰이 서버에 전송되었으며, 서버에서는 이 쿠키를 파싱하여 사용자의 인증 정보를 검증했습니다. 쿠키 기반 인증은 특히 고객의 접근성과 편의성을 크게 향상시켰습니다.

기술적 성과 및 반성:

  • 성과: 이 변경으로 인해 사용자 인증의 안정성과 보안이 크게 향상되었습니다. 또한, 서버와 클라이언트 사이의 통신이 간소화되면서 전반적인 시스템 성능이 개선되었습니다.
  • 반성 및 향후 계획: CSRF 공격 방어 전략은 지속적으로 검토하고 강화할 필요가 있습니다. 추가로, 쿠키 기반 인증의 여러 측면에서 발생할 수 있는 보안 문제에 대해 주기적인 스크럼과 리뷰를 통해 개선 방안을 모색할 계획입니다.
profile
전 체리 알러지가 있어요!

0개의 댓글