我正在尝试按照代码推送文档部署我的应用。然后,我将以下内容安全性添加到我的应用程序index.html
<meta http-equiv="Content-Security-Policy" content="default-src https://codepush.azurewebsites.net 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
我立即添加,我的应用程序不再运行。当我运行我的cordova浏览器。我在控制台中看到很多错误。事实证明我的样式文件是从github引用的,我的图像是从mysite.com / ...和我的其他外部脚本引用的,goopleapis是我下面的安全策略
<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 *">
现在工作正常。我的问题是,什么是安全衍生物?我应该这样离开吗?我该怎么做才能做得更好?任何帮助或意见将不胜感激。我担心离开*可能允许意图停止的攻击。
答案 0 :(得分:7)
你是对的,离开这样的CSP可能会让攻击者更轻松。使用CSP的主要思想是按照here描述的网址白名单。
通过使用*
通配符将所有内容列入白名单,一旦他能够将代码注入您的应用程序,您就允许攻击者从任何地方加载代码(并执行)。查看关于此的链接文章,它比我在这里写的要好很多;)
那么这样做的正确方法是什么?
style-src 'self' https://github.com 'unsafe-inline';
注意:请注意default-src
策略,因为它会覆盖其他策略。对于白名单图像,您可能需要添加data:
关键字,如下所示:img-src 'self' http://somedomain.com data:;
Mozilla's documentation非常好......
答案 1 :(得分:3)
解决了:
script-src 'self' http://xxxx 'unsafe-inline' 'unsafe-eval';