当我尝试将我的应用程序部署到Android系统高于5.0.0(Lollipop)的设备上时,我不断收到以下错误消息:
07-03 18:39:21.621:D/SystemWebChromeClient(9132):file:///android_asset/www/index.html: 第0行:拒绝加载脚本的http://xxxxx'因为它违反了以下内容安全策略指令:“script src'self''unsafe eval''unsafe inline'。07-03 18:39:21.621:I/chromium(9132):[信息:控制台(0)]“拒绝加载脚本”http://xxx'因为它违反了以下内容安全策略指令:“script src'self''unsafe eval''unsafe inline'。
但是,如果我将其部署到Android系统4.4. x(奇巧)的移动设备,安全策略与默认的工作:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
然后我想,也许我应该换成这样:
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'; style-src 'self' 'unsafe-inline'; media-src *">
基本上,两种选择都不适合我。我如何解决这个问题?
对于希望获得完整解释的任何人,我建议您查看内容安全策略:https://www.html5rocks.com/en/tutorials/security/content-security-policy/.
“代码来自https://mybank.com 应该只能访问https://mybank.com的数据,以及https://evil.example.com 绝对不应该被允许访问。每个来源都与web的其他部分隔离”
XSS攻击基于浏览器无法区分应用程序代码和从其他网站下载的代码。因此,您必须使用“<代码>内容安全策略< /代码> HTTP头”来考虑您认为安全下载内容的内容来源。
使用一系列策略指令描述此策略,每个指令都描述特定资源类型或策略区域的策略。您的策略应该包括一个默认的src policy指令,当其他资源类型没有自己的策略时,该指令是它们的后备策略。
所以,如果你修改你的标签为:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">
您是说您正在授权从源'self'
,执行JavaScript代码(
script src
)http://onlineerp.solution.quebec,
“不安全的内联”
,“不安全的评估”
。
我想前两个对于您的用例是完全有效的,我对其他的有点不确定<代码>'safe-line'
和'safe-eval'
会造成安全问题,因此除非您有非常特殊的需要,否则不应使用它们:
“如果eval及其文本到JavaScript兄弟对您的应用程序来说是完全必要的,您可以通过在script src指令中添加‘unsafe eval’作为允许的源来启用它们。但是,同样,请不要这样做。禁止执行字符串的能力会使攻击者更难在您的站点上执行未经授权的代码。”(迈克·韦斯特,谷歌)
解决方法是:
script-src 'self' http://xxxx 'unsafe-inline' 'unsafe-eval';
MagngooSasa给出的自我回答成功了,但对于其他试图理解答案的人来说,这里有一些更详细的信息:
在使用Visual Studio开发Cordova应用程序时,我尝试导入一个远程JavaScript文件[位于此处]http://Guess.What.com/MyScript.js],但我有标题中提到的错误。
以下是项目的index.html文件中前面的meta标记:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
以下是正确的元标记,以允许导入远程脚本:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">
不要再犯错误了!
问题内容: 当我尝试将我的应用程序部署到5.0.0以上的android系统的设备上时,我一直收到以下错误消息: 07-03 18:39:21.621:D / SystemWebChromeClient(9132):file:///android_asset/www/index.html:第0行:拒绝加载脚本“ http:// xxxxx ”,因为它违反了以下内容安全策略指令:“ script-sr
我尝试通过cryptojs库加密用户数据,并通过ajax发送到服务器,但控制台显示错误: 拒绝加载脚本'https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js',因为它违反了以下内容安全策略指令:脚本-src'自我'https://apis.google.com'不安全评估'。请注意,没有显式设置脚本-src-
我得到了这个错误: 尝试加载mapboxGL地图时。这是我的CSP标签:
我正在学习将Cordova与jquery mobile结合使用,我有以下错误: 拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“默认src“self”数据:间隙:https://ssl.gstatic.com “不安全评估”。启用内联执行需要'unsafe inline'关键字、哈希('sha256-iacGaS9lJJpFDLww4DKQsrDPQ2lxppM2d2GGnzCeKkU=')
有人能告诉我如何将CSP元标记添加到标题中吗?我尝试将不同的meta标记添加到我的头中,但CSP的错误更多 控制台错误堆栈
因此,在大约1小时内,我的扩展失败了。 我在做我的扩展,它在做我假装的事情。我做了一些更改,由于不喜欢,我删除了它们,现在我的扩展抛出错误: 拒绝应用内联样式,因为它违反了以下内容安全策略指令:“default src‘self’”。请注意,没有显式设置“style src”,因此使用“default src”作为回退。 是什么导致了这个错误? 我在以下方面进行了更改: popup.html po