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-uri
和report-to
:
Content-Security-Policy: ...; report-uri https://endpoint.com; report-to groupname
在支持的浏览器中report-to
,report-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'的定义。 | 建议 | 初始定义。 |
浏览器兼容性
特征 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基本支持 | 25 | 14 | 23.0 | No | 15 | 7 |
特征 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基本支持 | (Yes) | (Yes) | ? | 23.0 | No | ? | 7.1 |