CSPViolationReportBody: свойство disposition
Свойство disposition только для чтения интерфейса CSPViolationReportBody указывает, настроено ли пользовательское агент на применение нарушений Политики безопасности контента (CSP) или только на их сообщение.
Значение
Возможные значения:
Примеры
Пример нарушения CSP для встроенного скрипта, демонстрирующий свойство disposition
В этом примере возникает нарушение CSP с помощью встроенного скрипта, и нарушение сообщается с помощью ReportingObserver. Значение disposition регистрируется.
HTML
В файле HTML ниже используется элемент <meta> для установки Content-Security-Policy default-src на значение self, что позволяет загружать скрипты и другие ресурсы с того же домена, но запрещает выполнение встроенных скриптов. Документ также содержит встроенный скрипт, который, следовательно, должен вызвать нарушение CSP.
<!doctype html>
<html lang="en">
<head>
<meta
http-equiv="Content-Security-Policy"
content="default-src 'self'; report-to csp-endpoint" />
<meta
http-equiv="Reporting-Endpoints"
content="csp-endpoint='https://example.com/csp-reports'" />
<script src="main.js"></script>
<title>CSP: Violation due to inline script</title>
</head>
<body>
<h1>CSP: Violation due to inline script</h1>
<script>
const int = 4;
</script>
</body>
</html>
JavaScript (main.js)
Вышеуказанный документ также загружает внешний скрипт main.js, представленный ниже. Поскольку он загружается с того же домена, что и HTML, он не блокируется CSP.
Скрипт создает новый ReportingObserver для наблюдения за отчётами о нарушениях контента типа "csp-violation". Каждый раз, когда вызывается обратная функция, мы получаем тело первой записи массива отчётов и используем его для вывода в консоль файла, строки и столбца нарушения.
// main.js
const observer = new ReportingObserver(
(reports, observer) => {
const cspViolationBody = reports[0].body;
console.log(`disposition: ${cspViolationBody.disposition}`);
// For example: "enforce"
},
{
types: ["csp-violation"],
buffered: true,
},
);
observer.observe();
Обратите внимание, что хотя в возвращаемом массиве может быть несколько отчетов, для краткости мы выводим только значения первого элемента.
Результаты
Если предоставить указанный код, в логе будет выведено:
disposition: enforce
Примечание: Если Content-Security-Policy-Reporting-Only было включено, значение disposition было бы report. Однако, Content-Security-Policy-Reporting-Only должен быть предоставлен: его нельзя установить в элементе <meta> так, как это сделано выше.
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
disposition |
74 | 79 | Нет | 56 | превью | 74 | Нет | 48 | Нет | 10.0 | 74 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CSPViolationReportBody/disposition