Политика ресурсов между источниками
Политика ресурсов между источниками (CORP)
Политика ресурсов между источниками — это политика, задаваемая Cross-Origin-Resource-Policy HTTP-заголовком, которая позволяет веб-сайтам и приложениям включать защиту от определённых запросов из других источников (например, отправляемых с помощью таких элементов, как <script> и <img>), чтобы снизить риск спекулятивных атак по сторонним каналам, таких как Spectre, а также атак с включением межсайтовых скриптов. CORP — это дополнительный уровень защиты сверх стандартной политики одного источника.
Примечание: Политика действует только для запросов no-cors, которые по умолчанию отправляются для методов и заголовков, разрешённых CORS.
Поскольку эта политика задаётся с помощью заголовка ответа, фактический запрос не блокируется — вместо этого браузер предотвращает утечку результата, удаляя тело ответа.
Использование
Примечание: Из-за ошибки в Chrome установка Cross-Origin-Resource-Policy может нарушить отображение PDF-файлов, из-за чего посетители не смогут читать некоторые PDF-файлы дальше первой страницы. Соблюдайте осторожность при использовании этого заголовка в рабочей среде.
Веб-приложения задают политику ресурсов между источниками с помощью HTTP-заголовка ответа Cross-Origin-Resource-Policy, который принимает одно из трёх значений:
same-site-
Ресурс могут читать только запросы с того же сайта.
Предупреждение: Этот вариант менее безопасен, чем проверка источника. Алгоритм проверки того, принадлежат ли два источника одному сайту определён в стандарте HTML и включает проверку регистрируемого домена.
same-origin-
Ресурс могут читать только запросы с того же источника (то есть с той же схемой, хостом и портом).
cross-origin-
Ресурс могут читать запросы из любого источника (как с того же сайта, так и с другого). Это полезно при использовании COEP (см. ниже).
Cross-Origin-Resource-Policy: same-site | same-origin | cross-origin
При проверке политики ресурсов между источниками, если заголовок задан, браузер будет отклонять запросы no-cors, отправленные из другого источника или с другого сайта.
Связь с политикой встраивания ресурсов между источниками (COEP)
HTTP-заголовок ответа Cross-Origin-Embedder-Policy, если он применяется к документу, позволяет требовать, чтобы вложенные ресурсы либо находились на одном источнике с документом, либо содержали HTTP-заголовок ответа Cross-Origin-Resource-Policy, указывающий на то, что они допускают встраивание. Именно поэтому существует значение cross-origin.
История
Изначально эта концепция была предложена в 2012 году (как заголовок From-Origin), но во втором квартале 2018 года её возродили и реализовали в Safari и Chromium.
В начале 2018 года были раскрыты две аппаратные уязвимости по сторонним каналам, известные как Meltdown и Spectre. Эти уязвимости позволяли раскрывать конфиденциальные данные из-за состояния гонки, возникавшего при спекулятивном выполнении, предназначенном для повышения производительности.
Политика ресурсов между источниками была разработана как прямой способ блокировать нежелательные междоменные запросы no-cors. Это эффективная защита от атак, подобных Spectre: браузер удаляет тело указанных ответов до того, как злоумышленник сможет получить к ним доступ.
Спецификации
| Спецификация |
|---|
| Fetch> # cross-origin-resource-policy-header> |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
Cross-Origin_Resource_Policy |
73["До версии 75 загрузка файлов с этим заголовком в Chrome завершалась с ошибкой. См. ошибку 41452948.", "В версиях с 80 по 85 встроенные линейные PDF-файлы с этим заголовком отображались неправильно. См. ошибку 40127935. Начиная с версии 86 частичная загрузка PDF-файлов отключена."] |
79 | 74 | 60["До версии 62 загрузка файлов с этим заголовком в Opera завершалась с ошибкой. См. ошибку 41452948.", "В версиях с 67 по 85 встроенные линейные PDF-файлы с этим заголовком отображались неправильно. См. ошибку 40127935. Начиная с версии 72 частичная загрузка PDF-файлов отключена."] |
12 | 73["До версии 75 загрузка файлов с этим заголовком в Chrome Android завершалась с ошибкой. См. ошибку 41452948.", "В версиях с 80 по 85 встроенные линейные PDF-файлы с этим заголовком отображались неправильно. См. ошибку 40127935. Начиная с версии 86 частичная загрузка PDF-файлов отключена."] |
79 | 52["До версии 54 загрузка файлов с этим заголовком в Opera Android завершалась с ошибкой. См. ошибку 41452948.", "В версиях с 57 по 85 встроенные линейные PDF-файлы с этим заголовком отображались неправильно. См. ошибку 40127935. Начиная с версии 61 частичная загрузка PDF-файлов отключена."] |
12 | 11.0 | 73["До версии 75 загрузка файлов с этим заголовком в WebView Android завершалась с ошибкой. См. ошибку 41452948.", "В версиях с 80 по 85 встроенные линейные PDF-файлы с этим заголовком отображались неправильно. См. ошибку 40127935. Начиная с версии 86 частичная загрузка PDF-файлов отключена."] |
12 |
См. также
-
Cross-Origin-Resource-PolicyHTTP-заголовок
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Cross-Origin_Resource_Policy