COEP를 사용하여 CORP 헤더 없이 교차 출처 리소스 로드: 사용자 인증 정보 없음

서드 파티가 제공하는 교차 출처 리소스에는 적절한 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이 헤더 없이 로드되고 사용자 인증 정보를 제공합니다

다른 브라우저에서도 이 기능을 사용할 수 있나요?

다음 일정

Cloud Functions와 관련된 다른 문제를 완화하기 위해 두 가지 추가 업데이트가 예정되어 있습니다. 교차 출처 분리:

다음과 같은 이유로 SharedArrayBuffer 변경을 연장하기 위해 Chrome 오리진 트라이얼에 등록한 사용자 서비스 종료 시점이 궁금할 수 있습니다. 원래 우리는 Chrome 96에서 서비스 종료 예정임을 발표했지만, Chrome 106으로 연기했습니다.

리소스

사진: Martin Adams스플래시 해제