본문 바로가기
Http

Cookie SameSite Lax 모드 업데이트 정리

by ybs 2021. 4. 8.
반응형

SameSite Lax 는 top-level navigations, 그리고 safe HTTP method 일 경우에만 제한적으로 cross-site 상황에서 쿠키 생성 및 전달을 허용 한다. 혹시 이 얘기가 어렵다면 SameSite 기본편을 보고 오면 좋을거 같다.

 

RFC6265 정책 결정자들은 실제로 브라우저에 SameSite 정책을 적용해보니 Lax 모드를 전체적으로 적용하기 어렵다는것을 깨닫고 기존 Lax 스펙을 일부 수정했다. 

 

Lax-Allowing-Unsafe 가 새롭게 생겼는데 HTTP 요청 메서드와 상관없이 top-level request 일때  일때 cross-site 상황에서 쿠키 생성 및 전달이 가능해진다. 예를 들어 로그인 로직 플로우에서 cross-site top-level POST 요청을 하게 되면 기존 Lax 에서는 적절하지 않게 된다. 그렇다고 None 으로 하기엔 모든 cross-site 에 가능해지니 나름의 절충안이다.

 

그래서 Lax 알고리즘이 아래와 같이 바뀌었다.

 

쿠키 same-site-flag 가 None 이 아닐때, 그리고 HTTP 요청이 cross-site 이면 정책에 따라 쿠키 전달을 차단하는데 아래 3개 구문을 모두 만족할 때는 예외가 된다.

 

첫째, same-site-flag 가 Lax 이거나 Default 다.

둘째, HTTP 요청의 메서드가 safe 메서드이거나 브라우저의 Lax-Allowing-Unsafe 요구사항을 만족한다.

셋째, top-level navigation 일 때다. 

*  If the cookie's same-site-flag is not "None", and the HTTP
   request is cross-site (as defined in Section 5.2) then exclude
   the cookie unless all of the following statements hold:

   1.  The same-site-flag is "Lax" or "Default".

   2.  The HTTP request's method is "safe", or the cookie meets
       the user agent's requirements for being granted
       "Lax-allowing-unsafe" enforcement.

   3.  The HTTP request's target browsing context is a top-level
       browsing context.

 

하지만 Lax-Allowing-Unsafe 모드는 Lax 모드의 관대한 변형(permissive variant) 이다. 그래서 CSRF 공격에 대한 방어력이 낮을 수 밖에 없다. 따라서 궁극적으로는 모두 Lax 로 가야하고 Lax-Allowing-Unsafe 는 임시 조치로 간주되어야 한다.

 

 

참고 : github.com/httpwg/http-extensions/issues/1422

 

 

반응형