보안Medium#422
CSRF 공격은 SameSite 쿠키 속성으로 어떻게 완화할 수 있나요?
#보안#CSRF#Cookie#SameSite
답변 포인트
다른 사이트에서 요청이 날아갈 때 브라우저가 쿠키를 붙일지 말지를 기준으로 생각해보세요.
정답 및 해설
빠른 요약
CSRF는 사용자가 로그인된 상태라는 점을 악용해, 공격자 사이트에서 피해 서비스로 원치 않는 요청을 보내게 만드는 공격입니다. 핵심은 브라우저가 요청 대상 도메인의 쿠키를 자동으로 붙인다는 점입니다.
CSRF는 사용자가 로그인된 상태라는 점을 악용해, 공격자 사이트에서 피해 서비스로 원치 않는 요청을 보내게 만드는 공격입니다. 핵심은 브라우저가 요청 대상 도메인의 쿠키를 자동으로 붙인다는 점입니다.
SameSite는 cross-site 요청에 쿠키를 보낼지 제어하는 쿠키 속성입니다.
Strict: 다른 사이트에서 온 요청에는 쿠키를 보내지 않습니다. 가장 강하지만 외부 링크 진입 후 로그인 상태가 끊긴 것처럼 보일 수 있습니다.Lax: 일반적인 top-level GET navigation에는 쿠키를 보내지만, cross-site POST나 iframe 요청 등에는 제한됩니다. 많은 서비스의 기본 선택지입니다.None: cross-site 요청에도 쿠키를 보냅니다. 반드시Secure와 함께 써야 합니다.
HTTP
Set-Cookie: session=abc; HttpOnly; Secure; SameSite=LaxSameSite는 CSRF 위험을 크게 줄이지만 완전한 대체재는 아닙니다. 중요한 상태 변경 요청에는 CSRF token, Origin/Referer 검증, 재인증, idempotency 설계 등을 함께 고려하는 것이 좋습니다. 특히 OAuth, 외부 결제, 임베드처럼 cross-site 쿠키가 필요한 흐름은 예외 처리가 필요합니다.