标签: content-security-policy

拒绝框架 '' 因为它违反了以下内容安全策略指令:“frame-src *”

由于内容-安全-策略设置,我找到了许多针对“拒绝 xyz”的各种情况的解决方案。

但是,如果''被拒绝,我似乎无法找到可能有什么问题。

浏览器中的文字错误消息是

Refused to frame '' because it violates the following Content Security Policy directive: "frame-src *".
Run Code Online (Sandbox Code Playgroud)

它只发生在 Chrome 中。在 Firefox 或 Internet Explorer 中加载页面工作正常。

我设置了以下 CSP(这实际上是一行。为了便于阅读,我添加了新行):

default-src 'self';
script-src 'self' 'unsafe-inline' 'unsafe-eval';
style-src 'self' 'unsafe-inline';
img-src 'self' data:;
frame-src 'self' *;
object-src 'none';
font-src 'self' data:;
Run Code Online (Sandbox Code Playgroud)

现在我的理解*是“一切”。Chrome 不爱我的原因是什么?

旁注:我们已经评估除暴安良'unsafe-inline''unsafe-eval',但我们不能在此刻。如果这可能导致我的问题,请指出如何。否则,我知道这是一个安全隐患,我们正​​在努力摆脱它。现在它就在这里。

设置:网络服务器是一个 Apache:

# rpm -q httpd
httpd-2.4.6-80.el7.centos.1.x86_64
Run Code Online (Sandbox Code Playgroud)

edit1 尝试从网站内打开客户端的邮件程序时发生该错误。用户点击一个链接,邮件程序就会打开。

这可能就是 Chrome 将空字符串 ( '')显示为被阻止内容的原因。

google-chrome apache-2.4 centos7 content-security-policy

9
推荐指数
1
解决办法
1万
查看次数

在 nginx 中使用带有随机数的 CSP 时的客户端缓存 - 如何使用弱缓存验证器/etag?

我正在使用nginx 的expires指令;它的etag指令以及Last-Modified标题(如果我理解正确的话)默认情况下处于打开状态。

为了在使用限制性内容安全策略(CSP)标头(即无'unsafe-inline'资源策略)时允许特定的内联 JavaScript,我想使用随机数。

我基本上遵循了Scott Helme 关于此事的文章,在我的试验中使用 nginx$request_id来创建nonce ServerFault 上讨论的内容(以便快速尝试,而不必从头开始构建 nginx)。

然而,当我尝试此操作时,缓存似乎不再按我的预期工作:
Nginx 每次都以文件、新鲜Last-ModifiedETag标头进行响应,而不是304 Not Modified我希望的响应。

仔细想想,这是有道理的:nonceCSP 标头以及源代码中的 都会随着每个请求而变化。然而,其他一切都没有改变。因此,可以说,这是“弱验证器”应该忽略的更改(从而将请求的资源标记为更改)。

话虽如此,我对服务器配置或缓存标头知之甚少,甚至一无所知。很可能我所掌握的少量知识没有帮助,而且弱验证器无论如何也不应该以这种方式工作。

此外,似乎存在一个问题,即当浏览器拥有旧文件的缓存版本nonce但获得304 Not Modified新文件的标头时,浏览器会感到困惑nonce(尽管我自己在试用中没有看到这一点)。

因此,我的问题基本上是:是否可以配置nginx,以便缓存以某种方式工作,当nginx创建头(即它只看起来的地方)时,对唯一的更改(即通过文本替换动态发生的更改)nonce被忽略Last-ModifiedETag在磁盘上的文件更改时) - 有效地使用什么可能是弱验证器?

并且,假设浏览器混乱是一个问题,您是否可以采取一些措施来阻止它,例如当服务器返回 304 时不返回 CSP …

nginx cache etags content-security-policy http-caching

5
推荐指数
0
解决办法
965
查看次数