SameSite 속성은 웹 애플리케이션에서 쿠키의 보안을 강화하기 위해 사용하는 중요한 메커니즘입니다. 주로 CSRF(Cross-Site Request Forgery)와 같은 공격을 방지하는 데 활용됩니다. Spring Security는 SameSite 쿠키 속성을 지원하며, 이를 통해 보안성을 높일 수 있습니다.
1. SameSite란?
SameSite는 쿠키가 어떤 조건에서 클라이언트(브라우저)에 의해 전송되는지 제어하는 HTTP 쿠키 속성입니다. 브라우저가 쿠키를 제3자 요청(다른 도메인에서의 요청)에서 전송할지 여부를 결정하는 데 사용됩니다.
1.1. 주요 목적
CSRF와 같은 공격을 방지.
쿠키가 불필요하게 제3자 요청에 포함되지 않도록 제한.
2. SameSite 속성 값의 종류
Strict
쿠키는 동일한 도메인의 요청에서만 전송됩니다.
제3자 요청(다른 도메인에서의 요청)에서는 쿠키가 전송되지 않음.
가장 안전하지만, 사용자 경험(UX)을 제한할 수 있음.
사용 사례: 보안이 최우선인 애플리케이션(예: 뱅킹, 금융 서비스).
예시:
Set-Cookie: JSESSIONID=abc123; SameSite=Strict
Lax (기본값)
쿠키는 동일한 도메인뿐만 아니라, GET 요청 또는 탭/북마크에서 직접 액세스한 경우에도 전송됩니다.
@Bean
public CookieSerializer cookieSerializer() {
DefaultCookieSerializer serializer = new DefaultCookieSerializer();
serializer.setSameSite("None"); // 모든 요청에 쿠키 허용
serializer.setUseSecureCookie(true); // Secure 활성화 (HTTPS 필수)
return serializer;
}