2015-12-02 56 views
-1

我有一个网络应用程序,包裹在科尔多瓦Android和iOS。 由于内容安全策略元标记,我在Android设备上执行Javascript代码时遇到问题。我已经尝试了几个实现,其中包括最放松的实现,基本上可以让任何事情都经历,但没有任何工作。 所以我只是从我的index.html中删除了CSP元标签来解决这个问题。现在Android设备上的所有功能都可以使用,但我不知道这会带来什么影响。Cordova - 删除内容安全策略 - 影响?

那么完全删除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"> 

和其他一些meta标签源自这两者。

+0

所以......任何人都可以给我一个意见? thx –

回答

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,除非你有一个非常好的理由不太(事实上,苹果开始要求它,并会拒绝应用程序,如果他们从任何地方加载不安全的内容没有好的解释为什么)。

+0

我的主要问题是我有脚本编写内联,不会在Android上执行。我没有找到让CSP接受内联脚本的方法。在文档中,它说“启用内联JS:将'不安全内联'添加到default-src”。试过这个,仍然没有工作。我会阅读更多关于你的链接。 –

+0

我读了你的答案和文档,并设法使用你的通配符。谢谢。 –