서드 파티가 제공하는 교차 출처 리소스에는 적절한 CORP 헤더가 포함되지 않는 경우가 많습니다. 사용자 인증 정보 없이 요청할 수 있는 경우 이제 이를 표시하여 교차 출처 분리를 사용 설정할 수 있습니다.
새로운 교차 출처 삽입 정책 (COEP) 값이 출시되었습니다.
credentialless
: 브라우저에서 교차 출처 리소스를 로드할 수 있습니다.
교차 출처 리소스 정책 (CORP)을 사용하지 않는 경우
사용자 인증 정보를 포함할 수 있습니다 이를 통해 개발자는
보다 쉽게 격리할 수 있습니다
교차 출처 분리가 필요한 이유
일부 웹 API는 다음과 같은 부채널 공격의 위험을 증가시킵니다.
Spectre 받는사람
브라우저는 선택 기반의 격리 환경인
교차 출처 분리. 교차 출처 사용
웹 애플리케이션은
SharedArrayBuffer
님,
performance.measureUserAgentSpecificMemory()
해상도가 더 높은 고정밀 타이머도 활용할 수 있습니다.
사용하도록 선택하지 않는 한 다른 출처와 출처를 격리합니다.
교차 출처 분리를 사용하려면 웹페이지에서 두 개의 HTTP 헤더를 전송해야 합니다.
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
교차 출처 분리 상태에서 모든 교차 출처 리소스를 제공해야 함
또는 Cross-Origin-Resource-Policy
헤더를 로드하도록 설정합니다.
교차 출처 분리 사용 설정 문제
교차 출처 분리는 웹페이지의 보안과 배포하면 어렵습니다. 세계 최대의 모든 교차 출처에서 CORS 또는 CORP를 사용 설정해야 합니다 리소스를 배포합니다 이러한 헤더가 없는 리소스는 다음 시점에 브라우저에서 로드되지 않습니다. 교차 출처 분리 페이지입니다
이러한 교차 출처 리소스는 일반적으로 제3자가 제공합니다. 필요한 헤더를 추가하기가 쉽지 않습니다.
하지만 리소스가 로드될 만큼 안전하다는 것을 안다면 어떻게 될까요? 실제로 위험에 처한 리소스는 사용자 인증 정보로 요청된 리소스입니다. 잠재적으로 공격자가 컴퓨터에 로드할 수 없는 민감한 정보를 포함할 수 있습니다. 있습니다. 즉, 사용자 인증 정보 없이 요청할 수 있는 리소스는 로드하기에 안전합니다.
credentialless
구조 요청
이때 COEP: credentialless
가 필요합니다. credentialless
는 새 값입니다.
(Cross-Origin-Embedder-Policy
헤더) require-corp
와 유사하게 다음을 할 수 있습니다.
교차 출처 분리를 사용 설정하되 CORP:cross-origin
no-cors 교차 출처 요청에 대한 헤더가 있는 경우
사용자 인증 정보 (예: 쿠키)를 설정할 수 있습니다.
또는 다음 두 헤더:
Cross-Origin-Embedder-Policy: credentialless
Cross-Origin-Opener-Policy: same-origin
즉, 요청된 교차 출처 서버가 요청자는 항상 응답자가 민감한 리소스만 공개적으로 사용 가능한 정보를 포함하는 콘텐츠입니다.
이는 브라우저의 서드 파티 쿠키의 단계적 지원 중단 계획
데모
이 데모에서 다양한 헤더 옵션을 사용해 볼 수 있습니다. https://cross-origin-isolation.glitch.me
FAQ
credentialless
환경에서 사용자 인증 정보 요청을 보낼 수 있나요?
당연히 요청 모드를 변경하여 CORS 검사를 요구하게 됩니다.
확인할 수 있습니다 <audio>
, <img>
, <link>
, <script>
,
<video>
를 사용하는 경우, crossorigin="use-credentials"
를 명시적으로 추가하여
브라우저를 사용하여 인증된 요청을
보낼 수 있습니다
예를 들어 https://www.example.com
의 문서에
Cross-Origin-Embedder-Policy: credentialless
헤더, <img
src="https://images.example.com/avatar.png" crossorigin="use-credentials">
에서 실행할 작업
인증 요청을 전송합니다
fetch()
API의 경우 request.mode = 'cors'
를 사용할 수 있습니다.
COEP: credentialless
를 제공했는데 COEP: require-corp
이(가) 내 웹사이트에 얼마나 유용한가요?
COEP: require-corp
를 사용하면 요청 모드를 다음과 같이 수동으로 전환할 필요가 없습니다.
일부 교차 출처 하위 리소스에 쿠키가 필요한 경우 CORS를 사용합니다.
credentialless
환경에서 특수 헤더 없이 교차 출처 iframe을 로드할 수도 있나요?
아니요. credentialless
환경에서 교차 출처 iframe을 로드하려면 여전히 require-corp
와 동일한 조건이 필요합니다. iframe 문서는 두 개의 헤더와 함께 제공되어야 합니다.
Cross-Origin-Embedder-Policy: credentialless
(또는require-corp
)Cross-Origin-Resource-Policy: cross-origin
다행히 iframe crossorigin="anonymous"
를 제공하여 이러한 헤더 없이 교차 출처 iframe 로드를 허용하는 방법에 관한 논의가 진행 중입니다.
이렇게 하면 교차 출처 iframe이 헤더 없이 로드되고
사용자 인증 정보를 제공합니다
다른 브라우저에서도 이 기능을 사용할 수 있나요?
- Firefox 추적 문제
- Webkit 위치 요청: 신호 없음
- W3C TAG 게재위치 요청: 대기 중
다음 일정
Cloud Functions와 관련된 다른 문제를 완화하기 위해 두 가지 추가 업데이트가 예정되어 있습니다. 교차 출처 분리:
다음과 같은 이유로 SharedArrayBuffer 변경을 연장하기 위해 Chrome 오리진 트라이얼에 등록한 사용자 서비스 종료 시점이 궁금할 수 있습니다. 원래 우리는 Chrome 96에서 서비스 종료 예정임을 발표했지만, Chrome 106으로 연기했습니다.
리소스
- 웹사이트를 '교차 출처 분리'으로 설정하기 COOP 및 COEP를 사용하여
- '교차 출처 분리'가 필요한 이유 강력한 기능을 사용해 보세요
- 교차 출처 분리 사용 설정 가이드
- Android Chrome 88 및 데스크톱 Chrome 92의 SharedArrayBuffer 업데이트
사진: Martin Adams 의 스플래시 해제