개발자의 공부방/스프링

스프링] 쿠키의 Same Site를 알아보자

  • -
728x90
반응형

Same Site란?

크롬 정책에서 비롯한 쿠키 정책이며 SameSite라는 속성의 기본 값을 None에서 Lax로 변경한 것이다.
이는 CSRF 및 의도하지 않은 정보 유출에 대한 취약성에 대처하기 위함이다.

 

SameSite 속성

총 3가지의 종류가 있다.

Strict, Lax, None

Strict

👉 SameSite간의 요청에서만 쿠키의 전송을 허용하며 가장 완벽한하지만 편의성이 떨어진다.

Lax

👉 기본적으로는 Strict지만 Cross Site 요청에서도 “Safe”한 요청인 Http GET, a태그, link태그를 통한 접근은 허용한다.

None

👉 Same Site 요청은 물론 Cross Site의 요청에도 모두 전송을 허용한다. 그렇기때문에 보안에 취약하다. None을 사용하려면 반드시 HTTPS 프로토콜 하에서 Secure 속성과 함께 사용해야 한다.

 

쉽게 요약하면 Strict < Lax < None 순으로 보안에 취약하다는 것이다.

Spring 5.0

스프링 5에서부터 추가된 ResponseCookie 클래스, 코드를 보면서 이해하자.

 

작성한 코드

> 설명

해당 코드는 프로젝트 내에 있는 코드 중 일부분(Controller)이다.

UUID를 랜덤으로 생성 후 로그인 시 accessToken을 발급하는 형태이다.

이때 발급 받은 accessToken을 쿠키로 감싸서 헤더에 넣어 응답을 내려주도록 구성된 Contorller이다.

@RestController
@RequiredArgsConstructor
public class AuthController {
    private final AuthService authService;

    @PostMapping("/auth/login")
    public ResponseEntity<?> login(@RequestBody Login login) {
        String accessToken = authService.signin(login);
        
        ResponseCookie responseCookie = ResponseCookie.from("SESSION", accessToken)
                .domain("localhost")
                .path("/")
                .httpOnly(true)
                .secure(false)
                .maxAge(Duration.ofDays(30))
                .sameSite("Strict")
                .build();

        return ResponseEntity.ok()
                .header(HttpHeaders.SET_COOKIE, responseCookie.toString())
                .build();
    }
}

 

ResponseCookie 옵션 설명

path: URL 경로이다.

httpOnly : XSS 공격을 방지하기 위한 옵션이다.

secure : HTTPS 프로토콜 상에서 암호화된 요청을 위한 옵션이다.

maxAge : 쿠키의 유통기한 옵션이다.

sameSite : 서로 다른 도메인간의 쿠키 전송에 대한 보안을 설정하는 옵션이다.

 

 

 

 

 

참고자료

블로그 : https://devvkkid.tistory.com/265

 

스프링부트에서 쿠키(Cookie)를 구워보자

쿠키? 먹는거 그거? 크롬 브라우저를 열고 네이버에 접속해서 로그인을 한다. 그리고 새로운 탭을 열어서 네이버에 접속하면 로그인된 화면을 볼 수 있다. 이 상태에서 엣지나 웨일같이 다른 브

devvkkid.tistory.com

블로그 : https://goodteacher.tistory.com/496

 

[cookie] SameSite 설정(Chrome 80 쿠키 이슈)

어느덧 브라우저 시장을 과점하고 있는 크롬은 2020.02.04일 발표된 크롬 80 버전에 새로운 쿠키 정책을 적용했다. 이른바 SameSite라는 속성의 기본 값을 "None"에서 "Lax"로 변경한 것이다. 이는 CSRF(Cros

goodteacher.tistory.com

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.