html - 您如何找到导致 CSP 错误的脚本?
问题描述
谷歌开始突然抛出这条消息:
"Content Security Policy of your site blocks the use of 'eval' in JavaScript"
我没有配置策略,所以为了测试,我尝试将我的 CSP 设置为(在 HTML 和 web.config 中):
<add name="Content-Security-Policy" value="default-src *; style-src 'self' 'unsafe-inline';
script-src 'self' 'unsafe-inline' 'unsafe-eval' https://js.squareup.com/; report-uri /csp_report_parser;" />
我在报告中一无所获,谷歌也不会告诉我来源:
如何找到违规代码?
谢谢!
解决方案
将“report-sample”标记添加到 script-src 指令。它应该发送导致违规的代码示例 - 40 个字符,还将发送行号(我可以看到您确实使用违规报告功能)。
在浏览器控制台中,您可以看到发生违规的函数名称(绿色箭头)和行号(下方打印屏幕上的蓝色箭头)。
report-sample
红色下划线 的结果:您可以通过 javascript 捕获SecurityPolicyViolation 事件- 违规报告中发送的所有内容都是可访问的,包括行/列号。
谷歌开始突然抛出这条消息:
它不可能是出乎意料的。可能是软件升级后激活了默认的 CSP 规则,或者您触摸了设置。
无论如何,您script-src 'self' 'unsafe-inline' 'unsafe-eval'
的 CSP 允许 eval 表达式,因此您在某个地方发布了另一个 CSP。
推荐阅读
- python - python sys.path:如何从 sys.path 中永久删除不正确的站点包?
- r - 如何在 h2o 数据框中添加新的分类变量
- amazon-web-services - 如何将错误代码从用户数据传递到代码管道以指示失败
- html - 如何以角度在行的下一列中打开routerLink?
- c# - 在 asp.net webform 中比较和删除列表框中的项目
- java - 我可以让这个电话验证器正则表达式更高效吗?
- python - 将字符串列表转换为非字符串列表
- spring - Spring - 如何在 postForObject 方法中使用超类作为 responseType?
- android-studio - Android 布局编辑器错误(无法在编辑器上创建约束):java.lang.IllegalArgumentException:集合为空
- coldfusion - 当我们在 ColdFusion 中使用 API 调用(POST 请求)将参数数量传递给服务器时,如何解决“POST 请求超出”错误?