버전 91 이전에는 Chrome의 타이머 해상도가 데스크톱에서 사이트 격리가 사용 설정된 경우 5마이크로초, Android에서는 그렇지 않은 경우 100마이크로초로 제한되었습니다.
사양 변경에 따라 버전 91부터 Chrome은 여러 플랫폼에서 명시적 타이머(performance.now()
, performance.timeOrigin
, DOMHighResTimestamps
를 노출하는 기타 성능 API)의 해상도를 100마이크로초로 제한합니다.
교차 출처 격리를 사용 설정하면 웹사이트에서 플랫폼에 관계없이 제한을 5마이크로초로 완화할 수 있습니다.
교차 출처 격리를 사용 설정하여 더 강력한 기능을 얻는 것은 SharedArrayBuffer
에 제시된 것과 유사한 접근 방식입니다.
교차 출처 격리는 웹페이지를 선택한 출처를 제외한 다른 출처에서 격리하는 상태입니다.
이에 대해 취해야 할 조치가 있나요?
그렇지 않을 수도 있습니다. performance.now()
는 다른 브라우저에서 훨씬 더 낮은 해상도로 제한되었으므로(예: 1밀리초 = 0.001초) 현재 해상도에 의존하지 않았을 것입니다.
동시에 타이머의 고해상도를 활용하려면(예: 더 정확한 성능 측정) 사이트가 교차 출처 분리되어 있는지 확인해야 합니다. 이렇게 하면 Chrome과 기타 Chromium 기반 브라우저 및 Firefox에서 모두 해상도가 향상됩니다.
타이머는 교차 출처 격리와 어떤 관계가 있나요?
브라우저 공급업체는 스펙터가 발견되었을 때 타이머를 좀 더 대략적인 해상도(및 암시적 타이머로 사용할 수 있는 SharedArrayBuffers 가용성)로 제한하기로 했습니다. 이는 스펙터 및 이와 유사한 예측 실행 공격이 타이머를 사용하여 특정 작업에 걸리는 시간을 측정한 다음 프로세스 메모리의 내용을 추측하기 때문입니다.
예측 실행 공격은 대략적인 타이머로 실행할 수 있지만 고해상도 타이머는 속도를 높일 수 있습니다. Chrome은 사이트 격리 아키텍처와 기타 메커니즘을 사용하여 위험을 완화하고 이러한 기능을 다시 사용 설정했지만 데스크톱 플랫폼과 Chromium 브라우저로만 제한됩니다. 기본 브라우저 아키텍처에 의존하는 API를 갖는 것은 바람직하지 않습니다.
교차 출처 격리는 브라우저가 원치 않는 교차 출처 리소스를 로드할 수 없으므로 스펙터의 위험이 없는 격리된 환경에서 페이지를 실행하는 데 사용되는 표준 기준을 제공합니다.
이제 교차 출처 분리를 통해 임의의 교차 출처 데이터를 읽을 수 있는 프로세스에 노출하기 안전하지 않은 고해상도 타이머, SharedArrayBuffer
, 기타 API에 페이지에서 액세스하도록 허용할 수 있습니다.
이 변경사항의 배경에 관한 자세한 내용은 강력한 기능을 위해 '교차 출처 분리'가 필요한 이유를 참고하세요.
표지 사진: 린다 페레즈 요하네센(Unsplash)