Chrome 135부터 새로운 sandbox
값인 allow-same-site-none-cookies
를 사용할 수 있습니다. 이 정책이 지정되고 서드 파티 쿠키를 사용할 수 없는 경우 브라우저는 퍼스트 파티 샌드박스 처리된 iframe에서 발생한 HTTP 요청에만 SameSite=None
쿠키를 전송합니다.
샌드박스 처리된 iframe이란 무엇인가요?
샌드박스 처리된 iframe은 특수 제한이 적용된 iframe입니다. null
, 불투명 출처가 있는 것으로 간주됩니다. 기본적으로 스크립트, 양식, 팝업과 같이 잠재적으로 유해한 기능은 샌드박스 처리된 iframe 내에서 사용할 수 없습니다.
sandbox
속성을 사용하여 샌드박스 처리된 iframe에서 사용할 수 있는 기능을 지정합니다. 예를 들면 다음과 같습니다.
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
삽입된 콘텐츠가 성공적으로 로드되는 데 필요한 권한을 세부적으로 선택하고 잠재적인 악용의 범위를 제한할 수 있으므로 항상 샌드박스를 사용하는 것이 좋습니다.
새로운 정책이 필요한 이유는 무엇인가요?
allow-same-site-none-cookies
가 도입되기 전에는 샌드박스 처리된 iframe 내에서 두 가지 쿠키 시나리오를 구성할 수 있었습니다.
sandbox
속성에allow-same-origin
토큰이 없으면 iframe의 출처가null
로 직렬화되어 샌드박스 페이지의 모든 요청이 크로스 사이트가 됩니다. 이 경우SameSite=None
가 있는 쿠키만 요청에 포함됩니다.sandbox
속성에allow-same-origin
토큰이 있으면 요청이 iframe의 실제 출처에서 발생한 것으로 처리되므로SameSite
값이 있는 쿠키를 전송할 수 있습니다.
서드 파티 쿠키가 차단된 경우 allow-same-origin
가 없는 샌드박스 처리된 iframe은 allow-same-site-none-cookies
를 사용 설정하지 않는 한 쿠키를 전송할 수 없습니다.
allow-same-origin
가 있는 iframe은 서드 파티 쿠키가 차단된 경우에도 동일 사이트 요청에 쿠키를 포함할 수 있습니다. 그러나 전체 출처의 쿠키 저장소가 잠재적으로 악의적인 웹 활동에 노출됩니다.
allow-same-site-none-cookies
를 사용하면 iframe이 HTTP 요청에서 SameSite=None
쿠키를 전송할 수 있지만 민감할 수 있는 SameSite=Strict
및 SameSite=Lax
쿠키는 포함되지 않습니다.
실제 사례
사용자가 맞춤 코딩 프로젝트를 만들고 실행하며 다른 사용자의 코드를 삽입할 수 있는 사이트 practice-coding.example
를 생각해 보세요. 서비스를 사용하려면 사용자가 로그인해야 하며, 이로 인해 SameSite=Strict
세션 쿠키가 설정됩니다.
다른 사용자가 practice-coding.example/cookie-theft
프로젝트를 만들면 다른 사용자가 알지 못하는 사이에 프로젝트에 iframe으로 삽입할 수 있습니다. SameSite=Strict
및 SameSite=Lax
쿠키가 practice-coding.example/cookie-theft
iframe에 노출되면 악의적인 사용자가 다른 사용자의 세션 쿠키를 훔칠 수 있습니다.
이 시나리오에서는 사이트 소유자가 민감할 수 있는 쿠키에 대한 액세스를 제한하는 것이 좋습니다. 하지만 여전히 샌드박스 처리된 iframe 내에서 SameSite=None
쿠키를 허용해야 할 수 있습니다. 예를 들어 practice-coding.example/coding-interview
샌드박스 iframe에서는 응시자가 코드를 다시 방문할 수 있도록 SameSite=None
쿠키가 필요할 수 있습니다.
allow-same-site-none-cookies
는 전체 쿠키 저장소가 노출되는 것을 방지하면서 필요한 SameSite=None
쿠키를 선택적으로 허용합니다.
퍼스트 파티 샌드박스 프레임 내에서 SameSite=None
만 허용하려면 어떻게 해야 하나요?
퍼스트 파티 샌드박스 페이지의 요청에서 SameSite=None
쿠키를 사용 설정하려면 iframe 태그에 allow-same-site-none-cookies
토큰을 지정합니다. 예를 들면 다음과 같습니다.
<iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>
Content-Security-Policy
HTTP 헤더를 사용하여 allow-same-site-none-cookies
정책을 설정할 수도 있습니다.
Content-Security-Policy: sandbox allow-same-site-none-cookies;
데모를 통해 직접 사용해 보세요.