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
'Http' 카테고리의 다른 글
WebClient 프록시(CONNECT HTTP Method) (0) | 2022.11.27 |
---|---|
HTTP keep-alive on/off 에 따라 다른 결과가 나오는 이슈 (0) | 2022.05.29 |
GET / POST 를 목적에 맞춰 사용하지 못한 케이스 (0) | 2021.06.18 |
Cookie SameSite 기본편 (0) | 2021.02.05 |
https + id/pw rsa 암호화 (0) | 2021.01.31 |