拒绝加载图片,因为它违反了内容 - 安全政策 - Cordova

Nur*_*ihu 11 cordova content-security-policy

我正在尝试按照代码推送文档部署我的应用程序.然后我将以下内容安全性添加到我的应用程序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 *">
Run Code Online (Sandbox Code Playgroud)

我立即添加,我的应用程序不再运行.当我运行我的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 *">
Run Code Online (Sandbox Code Playgroud)

它现在工作正常.我的问题是,什么是安全衍生物?我应该这样离开吗?我该怎么做才能做得更好?任何帮助或意见将不胜感激.我担心离开*可能允许意图停止的攻击.

Pho*_*log 9

你是对的,离开这样的CSP可能会让攻击者更轻松.使用CSP背后的主要思想是网址白名单,如此处所述.

通过使用*通配符将所有内容列入白名单,一旦他能够将代码注入您的应用程序,攻击者就可以从任何地方加载代码(并执行).查看关于此的链接文章,它比我在这里写的要好很多;)

那么这样做的正确方法是什么?

  1. 找出您想要列入白名单的域名以及此域名提供的资源类型.
  2. 摆脱通配符和白名单正是这些领域正是为那些你需要的资源.我们举个例子来看看GitHub的样式表.你必须将GitHub添加为一个值得信赖的域,对于这样的样式:style-src 'self' https://github.com 'unsafe-inline';

注意:请注意default-src策略,因为它会覆盖其他策略.当涉及白名单图像时,您可能必须添加如下data:关键字:img-src 'self' http://somedomain.com data:;

如果您正在寻找所有政策和关键字的概述,Mozilla的文档非常好......