이제 COEP를 사용하는 개발자는 COEP 자체를 사용하지 않는 서드 파티 iframe을 삽입할 수 있습니다.
Iframe 인증 정보 없음은 Chrome 버전 110부터 기본적으로 사용 설정됩니다. 이 기능은 교차 출처 삽입자 정책 (COEP)을 사용하는 개발자가 가장 자주 제기하는 불만사항인 COEP를 설정하지 않은 서드 파티 iframe 삽입 문제를 해결합니다.
COEP가 필요한 이유
일부 웹 API는 Spectre와 같은 측면 채널 공격의 위험을 증가시킵니다. 이러한 위험을 완화하기 위해 브라우저는 COEP를 배포해야 하는 교차 출처 격리라는 선택 기반 격리된 환경을 제공합니다. 교차 출처 격리를 사용하면 웹사이트에서 SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
, 더 나은 해상도의 고정밀 타이머와 같은 권한이 있는 기능을 사용할 수 있습니다.
교차 출처 격리를 사용 설정하려면 웹사이트에서 다음 HTTP 헤더를 전송해야 합니다.
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
require-corp
대신 COEP:credentialless를 사용할 수도 있습니다. 자세한 내용은 문서를 참고하세요.
COEP 사용 설정 관련 문제
교차 출처 격리는 웹페이지의 보안을 강화하고 강력한 기능을 사용 설정할 수 있지만 COEP를 배포하는 것은 어려울 수 있습니다. 가장 큰 문제 중 하나는 모든 교차 출처 iframe이 COEP 및 CORP를 배포해야 한다는 점입니다. 이러한 헤더가 없는 iframe은 브라우저에서 로드되지 않습니다.
인증 정보가 없는 iframe으로 해결
COEP를 설정하지 않는 서드 파티 iframe을 삽입하는 데 도움이 되는 <iframe credentialless>
가 도입됩니다. <iframe>
요소에 credentialless
속성을 추가하면 iframe이 다른 빈 컨텍스트에서 로드됩니다. 특히 쿠키 없이 로드됩니다. 이렇게 하면 COEP 제한을 삭제할 수 있습니다.
예:
<iframe credentialless src="https://example.com">
이 iframe은 새로운 일시적 컨텍스트에서 생성되며 최상위 웹사이트와 연결된 쿠키에 액세스할 수 없습니다. 대신 빈 쿠키 저장소로 시작합니다. 마찬가지로 LocalStorage, CacheStorage, IndexedDB와 같은 저장소 API는 새 임시 파티션에 데이터를 로드하고 저장합니다. 파티션은 현재 최상위 문서와 iframe의 출처 모두에 적용됩니다. 최상위 문서가 언로드되면 이러한 모든 저장소가 삭제됩니다.
사용자 인증 정보가 없는 iframe에는 COEP 삽입 규칙이 적용되지 않습니다. 여전히 안전합니다. 매번 새 빈 컨텍스트에서 로드되므로 공격자가 노리는 맞춤설정된 데이터를 포함해서는 안 됩니다. iframe에 공개 데이터만 포함되어 있으면 공격자에게는 가치가 없습니다.
데모
인증 정보가 없는 iframe 데모를 확인할 수 있습니다.
FAQ
이 기능이 다른 브라우저에서도 채택되나요?
<iframe>
가 <iframe credentialless>
내부에 중첩되어 있나요?
예. 상속됩니다. iframe이 사용자 인증 정보가 없으면 credentialless
속성이 없어도 전체 하위 트리의 모든 iframe에 적용됩니다.
<iframe credentialless>
에서 생성된 팝업도 사용자 인증 정보 없이 생성되나요?
noopener
가 설정된 것처럼 팝업이 열립니다. 이러한 컨텍스트는 새 일반 최상위 컨텍스트에서 생성되며 사용자 인증 정보가 없습니다. 사용자 인증 정보가 없는 iframe과 통신할 수 없습니다.
사용자 인증 정보가 없는 iframe에 문서가 삽입되었는지 감지하는 방법
window.credentialless
는 사용자 인증 정보가 없는 iframe 내부에서는 true이고 그렇지 않으면 false입니다. <iframe credentialless>
를 지원하지 않는 웹브라우저에서는 값이 undefined
입니다.