Согласование таймеров с ограничениями изоляции перекрестного происхождения

До версии 91 разрешение таймера в Chrome было ограничено 5 микросекундами на настольном компьютере, где включена изоляция сайтов , и 100 микросекундами на Android, где это не так.

Начиная с версии 91, после изменения спецификации , Chrome будет ограничивать разрешение явных таймеров ( performance.now() , performance.timeOrigin и других API производительности, которые предоставляют DOMHighResTimestamps ) до 100 микросекунд на разных платформах. Обеспечивая изоляцию перекрестного происхождения , веб-сайты могут ослабить ограничение до 5 микросекунд независимо от платформы.

Получение более мощных возможностей путем обеспечения изоляции межооооооооооооолирования является аналогичным подходом, созданным на SharedArrayBuffer . Изоляция кроссоригина-это состояние, в котором веб-страница изолирована от других источников, кроме тех, которые выбрали.

Нужно ли мне что-то с этим делать?

Вероятно, нет. В других браузерах performance.now() был ограничен значительно более грубыми разрешениями (например, 1 миллисекунда = 0,001 секунды), поэтому вам в любом случае не следует полагаться на текущее разрешение.

В то же время, если вы хотите получить выгоду от более высокого разрешения для ваших таймеров, например, для более точных измерений производительности, вам необходимо убедиться, что ваш сайт изолирован от разных источников . Это обеспечит вам лучшее разрешение как в браузерах на хроме, так и в других браузерах на основе хрома, так и в Firefox .

Что имеют таймеры к изоляции кросс-аоригина?

Когда был обнаружен Spectre , производители браузеров решили ограничить таймеры более грубыми разрешениями (а также доступностью SharedArrayBuffers, которые можно использовать в качестве неявных таймеров). Это связано с тем, что Spectre и подобные атаки спекулятивного выполнения полагаются на таймеры для измерения времени, затрачиваемого на определенные операции, а затем угадывают содержимое памяти процесса.

В то время как спекулятивные атаки выполнения могут быть выполнены с помощью грубых таймеров, таймеры с высоким разрешением могут ускорить их. Chrome использовал свою архитектуру изоляции сайтов , а также другие механизмы , чтобы снизить риск и повторно включить эти функции, но она ограничена только настольными платформами и браузерами Chromium. Наличие API, полагаясь на основную архитектуру браузера, не идеально.

Изоляция между источниками обеспечивает стандартную основу для браузеров для запуска страниц в изолированной среде, так что они не могут загружать нежелательные ресурсы из разных источников и, следовательно, не подвергаются риску для Spectre. Благодаря изоляции между источниками мы теперь можем разрешить страницам получать доступ к таймерам высокого разрешения, SharedArrayBuffer и другим API, которые небезопасно предоставлять в процессах, которые могут читать произвольные данные из разных источников.

Чтобы узнать больше о фоне этого изменения, прочитайте , почему вам нужно «изолированные кросс-аоригин» для мощных функций .

Обложка фото Линды Перес Йоханнессен на Unsplash .