当前位置: 首页 > 知识库问答 >
问题:

内容安全策略冲突

笪健
2023-03-14

在我的页面上,我给出了层次结构:

Page - http://179.15.31.103/path

|- frame - //proxy.domain.training/path 

    |- frame - https://app.domain.training/path

内部框架带有给定的标题

Content-Security-Policy:frame-ancestors app.domain.training proxy.domain.training domain.training *.domain.training 179.15.31.103 

看起来一切都是正确的,但我在chrome中遇到了这样的错误(ff中也有错误):

拒绝展示https://app.domain.training/path'在帧中,因为祖先违反以下内容安全策略指令:“帧祖先app.domain.training proxy.domain.training domain.training*.domain.training 179.15.31.103”。

我认为这可能是因为https,但我无法检查它。

共有1个答案

郭阳曜
2023-03-14

我建议将URL方案放在您的Content-Security-策略标头中的域之前。您可能最终不得不两次指定域来覆盖超文本传输协议https,但它似乎确实解决了问题。

我面临着类似的问题;如果父页面是通过普通的http提供的,而iframed页面是通过包含父域但没有URL方案的CSP头提供的,Firefox和Chrome都会给出您引用的错误。

我在Pale Moon(Firefox叉子)的发行说明中找到了关于为什么会发生这种情况的最大线索:

26.5.0(2016-09-28)修复/更改:

实施了突破性的CSP(内容安全策略)规范更改;当通过http加载带有CSP的页面时,Pale Moon现在会将CSP指令解释为也包括CSP中列出的主机的https版本(如果未明确列出方案(http/https))。这与CSP1.0不同,后者限制性更强,不允许这种跨协议访问,但与CSP2一致,后者允许这种访问。

https://www.palemoon.org/releasenotes-archived.shtml

然而,Pale Moon 26.5.0的行为似乎仍然与Firefox和Chrome类似。

斯科特·赫尔姆也在博客上讨论了Safari的类似问题,但听起来现在这个问题已经解决了。

另一件需要注意的事情是框架页面是否也提供X-Frame-Options标头。我相信火狐和Safari是唯一支持这个标题和CSP的框架祖先标题的浏览器,当然在火狐的例子中,X-Frame-Options似乎占据了优先地位。使用X-Frame-Options ALLOW-from,您只允许指定一个URI,因此您可能需要根据您的需要为不同的浏览器更改标题。

 类似资料:
  • 内容安全策略 CSP(Content Security Policy)即内容安全策略,主要目标是减少、并有效报告 XSS 攻击,其实质就是让开发者定制一份白名单,告诉浏览器允许加载、执行的外部资源。即使攻击者能够发现可从中注入脚本的漏洞,由于脚本不在白名单之列,浏览器也不会执行该脚本,从而降低客户端遭受 XSS 攻击风险。 默认配置下,CSP 甚至不允许执行内联代码 (<script> 块内容,内

  • CSP(内容安全策略) CSP(Content Security Policy) 即内容安全策略,主要目标是减少、并有效报告 XSS 攻击,其实质就是让开发者定制一份白名单,告诉浏览器允许加载、执行的外部资源。即使攻击者能够发现可从中注入脚本的漏洞,由于脚本不在白名单之列,浏览器也不会执行该脚本,从而达到了降低客户端遭受 XSS 攻击风险和影响的目的。 默认配置下,CSP 甚至不允许执行内联代码

  • 所以我一直在尝试使用一个谷歌可编程搜索引擎脚本,但我在元标记方面遇到了问题。我在my中包含的meta标记如下所示: 但是,我仍然收到一个错误,告诉我它拒绝加载脚本,因为它违反了“内容安全策略指令:“script src'self'” 我想知道它是否从其他地方继承了一些设置,因为它不接受我正在设置的新脚本src,但是如果我将其设置为“无”,它会接受新脚本src。 顺便说一下,我对html非常陌生,所

  • 问题内容: 我在开发人员控制台中收到很多错误: 拒绝评估字符串 拒绝执行内联脚本,因为它违反了以下内容安全策略指令 拒绝加载脚本 拒绝加载样式表 这是怎么回事?内容安全策略如何工作?如何使用HTTP标头? 具体来说,如何… …允许多个来源? …使用不同的指令? …使用多个指令? …处理端口? …处理不同的协议? …允许的协议? …使用内联样式,脚本和标签以及? …允许吗? 最后: 到底是什么意思?

  • 我正在从chargebee.com加载外部脚本,并在控制台中收到此错误消息: [仅报告]拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script src'nonce VVZ V0c=''self'https://maps.googleapis.com https://domain.chargebeestatic.com http://dgkxwewtzsnml.cloudfront.ne

  • 我想使用javascript访问一个网站。但我在控制台中遇到以下错误。 拒绝连接到'https://example.com'因为它违反了以下内容安全策略指令:“default src'self'”。请注意,未显式设置“connect src”,因此使用“default src”作为回退。 我在index.html中添加了以下meta标记, 元超文本传输协议-Equiv="内容-安全-策略"内容="