允许Web套接字的content-security-policy元标记

时间:2015-10-07 07:21:14

标签: cordova websocket socket.io phonegap-plugins content-security-policy

情况:内容安全策略元标记

阻止phonegap serve的自动重载

添加内容安全策略会阻止自动重新加载phonegap serve实用程序。这是建立在cordova serve之上,但在文件编辑时自动重新加载应用程序。它的工作原理是在socket.io中注入index.html。我应该在我的CSP元标记中指定哪些内容允许套接字连接到我的笔记本电脑。

这是我当前的CSP元标记:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' 192.168.0.100 * ws:* ; connect-src ws://192.168.0.100 ws:*"> 

然而,在打开时,设备会一直显示“正在连接设备”,而不会在设备上收到事件。

另请注意,它开始处理删除此元标记,这意味着cordova-plugin-whitelist可能无法阻止它。

3 个答案:

答案 0 :(得分:9)

要将Web套接字添加到安全策略,请将web套接字协议(ws :)添加到connect-src指令。

connect-src 'self' ws:;

或者,您可以将ws:protocol添加到default-src并省略connect-src。这是一个有用的示例,可以满足大多数本地开发需求,同时仍然提供有用的安全约束。

<meta http-equiv="Content-Security-Policy"
      content="default-src 'self' data: gap: ws: ssl.gstatic.com 'unsafe-inline';">

content security policy的文档非常好且易于阅读。

答案 1 :(得分:0)

我遇到了类似的问题。这会影响Cordova 5.x.x.请参阅Nic Raboy https://blog.nraboy.com/2015/05/whitelist-external-resources-for-use-in-ionic-framework/

撰写的这篇博客文章

我不得不稍微调整元标记以使我的websocket连接。这就是看起来的样子;

 <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">

答案 2 :(得分:0)

如果您的websocket网址来自同一来源,则connect-src 'self'default-src 'self'都应足够-假设browsers have implemented the changes由于CSP规范在https://github.com/w3c/webappsec-csp/issues/7中发生了变化({{ 3}})。