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

cnv*_*mcx 6 websocket socket.io phonegap-plugins cordova content-security-policy

情况:phonegap serve由content-security-policy元标记阻止的自动重载

添加内容安全策略会阻止phonegap serve实用程序的自动重新加载.这是建立在cordova serve自动重新加载文件编辑的应用程序之上.它的工作原理是注射socket.ioindex.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:*"> 
Run Code Online (Sandbox Code Playgroud)

但是,在打开时,设备会一直显示"正在连接到设备",而不会在设备上收到事件.

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

Sco*_*ing 13

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

connect-src 'self' ws:;
Run Code Online (Sandbox Code Playgroud)

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

<meta http-equiv="Content-Security-Policy"
      content="default-src 'self' data: gap: ws: ssl.gstatic.com 'unsafe-inline';">
Run Code Online (Sandbox Code Playgroud)

内容安全策略的文档非常好,易于阅读.

  • 这唯一的帮助是我需要添加wss:用于安全的Web套接字 (4认同)
  • 大!如何限制为ws:// localhost?我正在尝试,但是没有用。 (2认同)

Mal*_*voz 5

如果您的 websocket 位于同一主机/端口上,则两者connect-src 'self'default-src 'self' 应该足够 - 假设浏览器已实现自https://github.com/w3c/webappsec-csp/issues/7 ( PR )中的 CSP 规范更改以来的更改

  • 目前 safari 不支持使用“self”进行 websocket 连接 (7认同)