SameSite 속성

김석규·2023년 1월 10일
0

HTTP 쿠키

목록 보기
2/2

SameSite 속성의 정의

HTTP Working Group이 2016년 발표한 RFC6265에 포함된 내요으로 쿠키를 자사 및 동일 사이트 컨텍스트로 제한해야 하는지 여부를 선언할 수 있다.

SameSite속성의 종류

  • Strict
    • SameSite상의 요청에서만 쿠키의 전송을 허용한다.
  • Lax
    • 기본적으로는 Strict이지만 CrossSite의 요청이라도 안전한 요청인 HTTP Get 방식, <a href="">, <link rel="prerender">를 통한 접근을 허용한다.
  • None
    • SameSite의 요청과 CrossSite 요청 모두 전송을 허용한다. 보안에 취약하므로 HTTPS 프로토콜 하에서 Secure 속성과 함께 사용해야 한다.

타 도메인 쿠키를 이용하기 위해선 SameSite='none'이 필요하고 보안조건들을 충족해야 한다.

SameSite의 기준

SameSite의 기준은 도메인 접미사와 도메인 접미사 바로 앞 도메인이 같다면 same-site로 간주한다.

하지만 public 접미사(.com 도는 github.io 등)의 경우는 도메인 접미사와 도메인 접미사 바로 앞 도메인이 같아도 Cross-site로 간주한다.

Chrome80 이슈

Chrome80버전 부터 SameSite 속성에 대한 정책이 Lax로 변경되었다.

  • 쿠키에 SameSite 속성이 없는 경우 Lax로 간주한다.
  • SameSite=none을 적용하려면 secure 옵션을 필수로 한다.
  • http와 https간의 연결은 Cross-site로 간주한다.(schemeful same-site)

왜 SameSite를 기본 None에서 Lax로 변경하였나?

  • 보안 및 개인정보 보호
    • 쿠키는 수정, 조회가 쉬워 CSRF 공격에 취약하고, 쿠키를 가로채 사용자의 활동을 추적할 수 있는 문제가 있다.
  • 쿠키가 많아지면 요청에 쓸데없는 오버헤드가 발생한다.

즉, 쿠키의 사용처를 명확히 함으로써 정보유출 위험을 완화하고, 오버헤드 문제를 해결하기 위함이다.

SameSite=none을 처리하지 못하는 브라우저

SameSite=none을 처리하지 못하는 브라우저도 있다. None은 Chrome67이상에서 추가된 기능이기 때문에 일부 클라이언트는 SameSite=none을 처리하지 못한다.

이 경우 SameSite=none과 secure 옵션이 있는 쿠키와 없는 쿠키(레거시 스타일) 둘 다 준비해서 상황에 맞게 대체해야 한다,

출처

https://developers.google.com/search/blog/2020/01/get-ready-for-new-samesitenone-secure
https://goodteacher.tistory.com/496
https://cherish-it.tistory.com/12

profile
백엔드 개발자 지망생

0개의 댓글