我有一个网络应用程序,包含Cordova for Android和iOS。 由于内容安全策略元标记,我在Android设备上执行Javascript代码时遇到问题。我已经尝试了几种实现方式,包括大多数放松一些基本上都可以通过的实现,但没有任何效果。 所以我刚从index.html中删除了CSP元标记来解决此问题。现在Android设备上一切正常,但我想知道这有什么意义。
那么完全删除CSP元标记的含义是什么?它如何影响我的申请?
P.S。我的应用程序基本上是一个数学公式的计算器,可以在线和离线工作(Javascript / HTML 5) 我的默认元标记是:
<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' foo.com">
以及从这两个派生的其他一些元标记。
答案 0 :(得分:1)
您希望CSP正常运行。它将有助于防止注入攻击和其他问题。这是关于CSP的一个很好的指南:
https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives
您提供的示例(如果您想访问foo.com不正确)。这将是一个正确的CSP:
<meta http-equiv="Content-Security-Policy" content="default-src http://*.foo.com https://*.foo.com 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
如果没有给出特定类型的src,则使用default-src。在上面的示例中,媒体文件可以从任何安全或不安全连接的地方加载。您的样式表只能来自您自己的包,并且您可以内联应用样式。
除非你有一个非常好的理由,否则你会想要使用https(事实上,Apple开始要求它,并且如果他们从任何地方加载不安全的内容而拒绝应用程序而没有很好的解释原因)。