Android Chrome 88 및 데스크톱 Chrome 92의 SharedArrayBuffer 업데이트

SharedArrayBuffer님이 행성에 힘든 시간을 보내고 하지만 점차 안정화되고 있습니다. 다음 사항에 유의하시기 바랍니다.

요약

  • SharedArrayBuffer은(는) 현재 Firefox 79 이상에서 지원되며 Android에서도 출시될 예정입니다. Chrome 88 하지만 교차 출처 분리된 페이지에서만 사용할 수 있습니다.
  • SharedArrayBuffer은(는) 현재 데스크톱 Chrome에서 사용할 수 있지만 Chrome에서는 사용할 수 있습니다. 92개 교차 출처 분리 페이지로 제한됩니다. 뭔가 잘못될 것 같지 않다면 오리진 트라이얼에 등록하여 Chrome 이상이 될 때까지 현재 동작을 유지할 수 있습니다. 113.
  • 교차 출처 분리를 사용 설정하여 계속 사용하려는 경우 SharedArrayBuffer에서 이것이 다른 교차 출처에 미칠 영향을 평가합니다. 요소(예: 광고 게재위치) SharedArrayBuffer인지 확인합니다. 서드 파티 리소스에서 서드 파티 리소스 중 사용되어 참조하세요.

교차 출처 분리 개요

다음 헤더:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

이렇게 하면 페이지에서 교차 출처 콘텐츠를 로드할 수 없습니다. 리소스가 Cross-Origin-Resource-Policy를 통해 명시적으로 허용하는 경우 헤더 또는 CORS 헤더 (Access-Control-Allow-* 등)

보고서 API도 있으므로 지속적 통합으로 인해 실패한 요청에 대한 데이터를 수집할 수 있으며 Cross-Origin-Embedder-PolicyCross-Origin-Opener-Policy.

Chrome 92에 맞춰 변경사항을 적용할 수 없다고 생각되면 현재 데스크톱 Chrome을 유지하려면 오리진 트라이얼에 등록하세요. Chrome 113 이상에서 작동해야 합니다.

이 페이지 하단의 추가 자료 섹션을 확인하세요. 교차 출처 분리에 관한 자세한 안내와 정보를 확인하세요

왜 이렇게 되었을까요?

SharedArrayBuffer의 Chrome 60 버전 (2017년 7월)을 시작하신 분들을 위해 Chrome 버전이 아닌 날짜로 시간을 생각한다면 모든 것이 훌륭했습니다. 6개월 동안

2018년 1월에 일부 인기 CPU에서 취약점이 발견되었습니다. 자세한 내용은 발표 본질적으로 코드에서 고해상도 이미지를 사용할 수 있고 타이머를 사용하여 액세스해서는 안 되는 메모리를 읽습니다

이 문제는 사이트가 실행될 수 있도록 하기 위해 브라우저 공급업체에 문제가 되었습니다. WASM 형태이지만 메모리는 엄격하게 제어하므로 액세스할 수 있습니다 제 웹사이트에 도착하시면 제가 내용을 읽을 수 없어요 열려 있는 인터넷 뱅킹 사이트의 모든 항목 실제로 인터넷 뱅킹 사이트가 열려 있다는 것도 알고 있습니다. 이 원칙은 있습니다.

이 문제를 완화하기 위해 performance.now() 형식으로 전송합니다. 그러나 다음을 사용하여 고해상도 타이머를 만들 수 있습니다. SharedArrayBuffer worker의 타이트 루프에서 메모리를 수정하고 다른 스레드에 반환합니다 이 문제를 해결하려면 의도된 코드에 큰 영향을 미치므로 SharedArrayBuffer가 사용 중지되었습니다. 완전히 달라졌습니다.

일반적인 완화 방법은 웹페이지의 시스템 프로세스에 다음이 포함되지 않도록 하는 것입니다. 민감한 정보를 수집해야 합니다 Chrome은 여러 프로세스에 (만화 만화를 기억하시나요?) 하지만 다음과 같은 경우에는 여러 사이트의 데이터가 동일한 프로세스로 끝날 수 있습니다.

<iframe src="https://your-bank.example/balance.json"></iframe>
<script src="https://your-bank.example/balance.json"></script>
<link rel="stylesheet" href="https://your-bank.example/balance.json" />
<img src="https://your-bank.example/balance.json" />
<video src="https://your-bank.example/balance.json"></video>
<!-- …and more… -->

이러한 API에는 '기존' 다른 출처의 콘텐츠가 다른 출처에서 수신 동의 없이 사용됩니다. 이러한 요청은 다른 출처의 쿠키가 합니다. 요즘에는 API는 다른 출처에서 다음을 사용하여 선택해야 합니다. CORS를 사용합니다.

Google은 콘텐츠가 해당 웹페이지의 프로세스를 교차 출처 읽기 차단이라고 했습니다. 따라서 위의 사례에서는 JSON이 프로세스에 들어가는 것을 허용하지 않습니다. 올바른 형식을 사용해야 합니다. 즉 iframe은 제외됩니다. iframe의 경우 콘텐츠를 다른 프로세스에 넣을 수도 있습니다

이러한 완화 조치를 통해 Chrome에 SharedArrayBuffer을 다시 도입했습니다. 68 (2018년 7월)이지만 데스크톱에서만 가능합니다. 추가 프로세스 요구사항은 모바일 장치에서 같은 작업을 할 수는 없었습니다. 또한 Chrome의 솔루션은 '잘못된' 콘텐츠만 차단했기 때문에 데이터 형식이고 비록 일반적이지만 추측 가능한 URL의 유효한 CSS/JS/이미지가 비공개 데이터를 포함할 수 없습니다.

많은 사람들이 힘을 합쳐 더 완전한 교차 브라우저 기능을 고안했습니다. 솔루션을 제공합니다 해결책은 페이지에 "본인은 이에 따라 동의 없이 다른 출처의 콘텐츠를 이 절차에 도입할 수 있는 능력 이 선언은 COOP 및 COEP 헤더를 통해 실행됩니다. 페이지당 표시될 수 있습니다. 브라우저는 이를 적용하고 그 대가로 페이지의 SharedArrayBuffer 및 유사한 권한을 가진 기타 API에 액세스할 수 있습니다. 기타 출처 다음을 통해 콘텐츠 삽입을 선택할 수 있습니다. Cross-Origin-Resource-Policy 드림 또는 CORS를 사용합니다.

Firefox는 2019년 9월에 이러한 제한으로 SharedArrayBuffer을(를) 최초로 출시한 바 있습니다. 버전 79 (2020년 7월).

그리고 2021년 1월에 제가 이 기사를 작성했는데 읽었습니다. 안녕하세요.

그리고 거기서 나왔어. Chrome 88에서 SharedArrayBuffer를 교차 출처 분리된 페이지용 Android와 Chrome 92에서 동일한 일관성 유지와 전체 교차 출처 달성이라는 두 가지 요구사항을 격리합니다

데스크톱 Chrome 변경 지연

이는 '오리진 트라이얼' 형태의 일시적인 예외입니다. 사람들에게 교차 출처 분리 페이지를 구현하는 데 더 많은 시간이 소요됩니다. 이를 통해 페이지를 교차 출처 분리하지 않아도 SharedArrayBuffer할 수 있습니다. 이 예외는 Chrome 113에서 만료되며 데스크톱에만 예외가 적용됩니다. Chrome으로 이동합니다.

  1. 원본에 대한 토큰을 요청합니다.
  2. 페이지에 토큰을 추가합니다. 다음 두 가지 방법이 있습니다. <ph type="x-smartling-placeholder">
      </ph>
    • 각 페이지의 헤드에 origin-trial <meta> 태그를 추가합니다. 예를 들어 다음과 같이 표시될 수 있습니다.
      <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • 서버를 구성할 수 있는 경우 Origin-Trial HTTP 헤더 사용 결과 응답 헤더는 다음과 같이 표시됩니다.
      Origin-Trial: TOKEN_GOES_HERE

추가 자료

배너 사진: Daniel 그레고이르 - Unsplash