프로젝트 배경: 서버사이드 렌더링을 활용한 농촌 일자리 플랫폼 구축 프로젝트에서 초기에는 사용자 인증 정보를 HTTP 헤더를 통해 JWT 토큰 형태로 전송하였습니다. 이 방식은 사용자가 매 API 요청마다 토큰을 수동으로 첨부해야 하는 불편함과 함께, 웹 애플리케이션의 보안 취약점이 노출되는 문제가 있었습니다.
변경 요청: 프런트엔드 개발자로부터, 보안을 강화하고 클라이언트의 토큰 관리를 자동화할 수 있는 방안으로 쿠키 기반의 토큰 관리를 제안받았습니다. 특히, 쿠키를 통해 HTTPOnly 및 Secure 플래그를 설정하여 XSS 공격으로부터 토큰을 보호하고 HTTPS 통신만을 통해 토큰이 전송되게 할 수 있음을 지적받았습니다.
기술적 고민: 토큰을 쿠키에 저장하기로 결정하기 전, 주요 보안 위험 중 하나인 CSRF 공격 가능성을 고려했습니다. 이를 해결하기 위해, CSRF 토큰을 도입하거나 쿠키의 SameSite 속성을 조정하는 방안을 심도 있게 검토했습니다.
구현 경험:
Set-Cookie
헤더를 통해 클라이언트에 전달했습니다. 쿠키는 HTTPOnly
, Secure
, SameSite=Strict
속성을 설정하여 보안을 강화했습니다. 이는 개발 초기에 스크럼을 통한 시뮬레이션을 통해 여러 보안 설정의 효과를 확인한 결과를 바탕으로 결정되었습니다.기술적 성과 및 반성: