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;
Google의 데모를 통해 직접 사용해 보세요.
참여 및 의견 공유
문제를 제출하여 의견을 공유하거나 문제를 신고하거나 GitHub에서 토론에 참여하세요.