content-security-policy - CSP“自我”在各种指令中都失败了
问题描述
我最近将 CSP 添加到我的网站并开始对其进行测试(仅限报告):除了一些我无法理解的报告外,它看起来还不错。
具体来说,我看到“自我”指令应该允许的资源违规。
服务器正在运行 Express,CSP 通过helmet-csp 提供服务。我已经使用多种服务(例如https://csp-evaluator.withgoogle.com/)验证了 CSP 策略标头,并且它没有错误。我正在使用 report-uri.com 来收集和分析 CSP 报告。
这是头盔 csp 设置:
app.use(csp({
directives: {
'default-src': ["'none'"],
'object-src': ["'none'"],
'script-src': ["'self'", (req, res) => `'nonce-${res.locals.nonce}'`],
'connect-src': ["'self'", (req, _res) => (req.protocol === 'http' ? 'ws://' : 'wss://') + req.get('host')],
'manifest-src': ["'self'"],
'worker-src': ["'self'"],
'style-src': ["'self'"],
'font-src': ["'self'"],
'img-src': ["'self'", 'data:'],
'base-uri': ["'self'"],
'form-action': ["'self'"],
'report-uri': '[REMOVED]'
},
reportOnly: true
}));
这是生成的 CSP 标头:
Content-Security-Policy-Report-Only: default-src 'none'; object-src 'none'; script-src 'self' 'nonce-[REMOVED]'; connect-src 'self' wss://MYSUBDOMAIN.MYDOMAIN.it; manifest-src 'self'; worker-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; report-uri [REMOVED]
这些是报告的一些示例:
{
"csp-report": {
"document-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/",
"effective-directive": "worker-src",
"original-policy": "default-src 'none'; object-src 'none'; script-src 'self' 'nonce-[removed]'; connect-src 'self' wss://MYSUBDOMAIN.MYDOMAIN.it; manifest-src 'self'; worker-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; report-uri [REMOVED]",
"blocked-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/notification-worker.js",
"line-number": 1,
"column-number": 1966,
"source-file": "https://MYSUBDOMAIN.MYDOMAIN.it/js/index.min.js"
}
}
{
"csp-report": {
"document-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/results",
"effective-directive": "img-src",
"original-policy": "default-src 'none'; object-src 'none'; script-src 'self' 'nonce-[removed]'; connect-src 'self' wss://MYSUBDOMAIN.MYDOMAIN.it; manifest-src 'self'; worker-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; report-uri [REMOVED]",
"blocked-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/img/icon_twitter_black.png",
"line-number": 82
}
}
{
"csp-report": {
"document-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/results",
"effective-directive": "style-src-elem",
"original-policy": "default-src 'none'; object-src 'none'; script-src 'self' 'nonce-[removed]'; connect-src 'self' wss://MYSUBDOMAIN.MYDOMAIN.it; manifest-src 'self'; worker-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; report-uri [REMOVED]",
"blocked-uri": "https://MYSUBDOMAIN.MYDOMAIN.it/css/results.min.css",
"line-number": 8
}
}
有十个左右类似的报告(不同的图像和 css 文件,但报告结构相同),它们都来自 Android 上的 Chrome。
我不明白为什么要发送所有这些报告:在每种情况下,相关政策都包含“self”关键字。
我错过了一些明显的东西吗?
解决方案
推荐阅读
- python - 在培训期间,我收到以下错误。“ ValueError:没有为任何变量提供渐变”
- javascript - 从对象生成的 UL 中添加和删除项目
- php - 我怎样才能只从一行打印一个条目,其他人从mysql打印所有
- javascript - Thymeleaf 模板中 HashMap 的级联下拉列表
- reactjs - React JS 在上传时有条件地渲染动画彩票组件
- apache-spark - 与使用较少资源的 wso2 siddhi 和 spark 相比
- typescript - 我们如何在 nz-carousel 中使用 goTo(slidenumber)?如果我想直接进入特定幻灯片编号
- azure - 通过调用注销端点自动注销
- mysql - 条件基于结果计数
- apache-spark - YARN EMR 上的并行 Spark Streaming 应用程序