CSP: report-uri

CSP: report-uri

弃用

该功能已从Web标准中删除。尽管一些浏览器可能仍然支持它,但它正在被丢弃。避免使用它并尽可能更新现有的代码;请参阅本页底部的兼容性表格来指导您的决定。请注意,此功能可能随时停止工作。

不推荐使用的HTTP Content-Security-Policy(CSP)report-uri指令指示用户代理报告违反内容安全策略的企图。这些违规报告由通过HTTP POST请求发送到指定URI的JSON文档组成。

尽管report-to指令旨在取代已弃用的report-uri指令,report-to但在大多数浏览器中仍不受支持。因此,对于当前浏览器的同时,还加入向前兼容的浏览器时获得的兼容性report-to支持,您可以同时指定report-urireport-to

Content-Security-Policy: ...; report-uri https://endpoint.com; report-to groupname

在支持的浏览器中report-toreport-uri指令将被忽略。

该指令本身没有任何影响,但仅与其他指令结合起来才有意义。

CSP版本1
指令类型报告指令

| 该指令在<meta>元素中不受支持。|

句法

Content-Security-Policy: report-uri <uri>;

<uri>将报告发布到的URI。

示例

请参阅Content-Security-Policy-Report-Only更多信息和示例。

Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/

/csp-violation-report-endpoint/ 例如可以运行一个如下所示的PHP,它记录详细说明违规的JSON,并且如果该违规是第一个添加到日志文件的违规,则向管理员发送一封电子邮件:

<?php // Start configure $log_file = dirname(__FILE__) . '/csp-violations.log'; $log_file_size_limit = 1000000; // bytes - once exceeded no further entries are added $email_address = 'admin@example.com'; $email_subject = 'Content-Security-Policy violation'; // End configuration $current_domain = preg_replace('/www\./i', '', $_SERVER['SERVER_NAME'] $email_subject = $email_subject . ' on ' . $current_domain; http_response_code(204 // HTTP 204 No Content $json_data = file_get_contents('php://input' // We pretty print the JSON before adding it to the log file if ($json_data = json_decode($json_data)) { $json_data = json_encode($json_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES if (!file_exists($log_file)) { // Send an email $message = "The following Content-Security-Policy violation occurred on " . $current_domain . ":\n\n" . $json_data . "\n\nFurther CPS violations will be logged to the following log file, but no further email notifications will be sent until this log file is deleted:\n\n" . $log_file; mail($email_address, $email_subject, $message, 'Content-Type: text/plain;charset=utf-8' } else if (filesize($log_file) > $log_file_size_limit) { exit(0 } file_put_contents($log_file, $json_data, FILE_APPEND | LOCK_EX } ?>

规范

规范状态评论
内容安全策略级别3该规范中“report-uri”的定义。编辑草稿没有变化。
内容安全策略级别2该规范中的'report-uri'的定义。建议初始定义。

浏览器兼容性

特征ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本支持251423.0No157

特征AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基本支持(Yes)(Yes)?23.0No?7.1