【发布时间】:2021-01-06 22:49:18
【问题描述】:
浏览器 - Chrome 版本 85.0.4183.102
围绕这个主题有很多线程,但我找不到处理 3rd 方库的最安全和正确的方法。 我在我的 chrome 扩展中使用剑道网格(jQuery)。它有“unsafe-eval”和“unsafe-inline”......除非我在 manifest.json 中设置以下条目,否则它不起作用。
"content_security_policy": "font-src data:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-eval'; object-src 'self';"
由于它不是最安全的做法.. 我怎样才能用哈希或随机数绕过它。
注意:剑道库是从本地机器下载和引用的。 (没有 CDN 引用)
'不安全线'
当我按预期删除“unsafe-inline”时,它会在我的情况下给出 5 个错误并提供 5 个不同的 sha-256 哈希值。我用 5 个哈希替换了“unsafe-inline”,但仍然出现相同的错误。
以下是我仅尝试使用 1 个哈希时的错误。
拒绝应用内联样式,因为它违反了以下内容安全策略指令:“style-src 'self' 'sha256-lzhPGNqxpwmBda/ftMrdga7dSTDWPq2rpjz66R6TVFw='”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-lzhPGNqxpwmBda/ftMrdga7dSTDWPq2rpjz66R6TVFw=”)或随机数(“nonce-...”)。
'不安全评估'
当我按预期删除“unsafe-eval”时,会给出没有生成的哈希值替换的错误。
'font-src 数据:'
尚未尝试绕过。
我什至尝试过 nonce,但没有奏效。
我错过了什么吗?还是我需要忍受'unsafe-inline'和'unsafe-eval'。如果是,潜在风险是什么?我计划向公众发布这个扩展。
编辑:我按照下面的建议尝试了沙盒。
这就是我所做的。
index.html
<html>
<head>
<link href="css/iframe.css" rel="stylesheet">
</head>
<body>
<iframe id="iframe" src="sandbox.html"></iframe>
</body>
</html>
sandbox.html 有剑道参考<script src="js/kendo.all.min.js"></script>
这里是 manifest.json 的变化
"sandbox": {
"pages:": [
"sandbox.html"
]},"content_security_policy": "sandbox allow-scripts allow-same-origin allow-popups;"
我仍然在使用剑道时遇到错误。有什么建议吗?
【问题讨论】:
标签: google-chrome-extension kendo-grid content-security-policy