拒绝在框架中显示 xyz,因为它设置了 X-Frame-Options - 我可以设置允许的域吗?

Posted

技术标签:

【中文标题】拒绝在框架中显示 xyz,因为它设置了 X-Frame-Options - 我可以设置允许的域吗?【英文标题】:Refused to display xyz in a frame because it set X-Frame-Options - can I set an allowed domain? 【发布时间】:2021-09-13 10:04:12 【问题描述】:

我正在整理一个即将进行渗透测试的网站,我们已被要求将 X-Frame-Options 标头添加到我们的服务器配置中。添加以下标头时,它会在我们使用 iframe 的 console.log 中给我一条错误消息

-- nginx 头文件--

add_header 'X-Frame-Options' "SAMEORIGIN";

-- 错误--

`拒绝在框架中显示“https://api.domain.com/”,因为它将“X-Frame-Options”设置为“sameorigin”。

显然,我了解此标头的安全原因,但我们的网站有一个我们根本无法更改的 iframe,并且它位于不同的域中,例如 oldapp.domain.com 而不是 api.domain.com。 我会使用ALLOW-FROM uri 指令来允许来自这个其他域,但不再推荐使用此指令,是否有替代ALLOW-FROM uri 的方法可以让我简单地添加一个可以允许显示 iframe 内容的域?

【问题讨论】:

【参考方案1】:

对于除一些较旧的浏览器(如 IE)之外的所有浏览器,您应该使用 Content-Security-Policy 和 frame-ancestors 指令。使用 CSP 框架祖先,您可以使用通配符 *.domain.com 或多个来源“oldapp.domain.com api.domain.com www.domain.com”。

X-Frame-Options ALLOW-FROM 仅接受一个 uri,您可能必须根据传入请求从允许的主机名列表中动态设置 uri。或者,如果您不需要完全支持 IE 和其他过时的浏览器,则可以将该值设置为 SAMEORIGIN,因为如果存在 CSP 框架祖先,则 X-Frame-Options 将被忽略。

【讨论】:

以上是关于拒绝在框架中显示 xyz,因为它设置了 X-Frame-Options - 我可以设置允许的域吗?的主要内容,如果未能解决你的问题,请参考以下文章

拒绝在框架中显示,因为它将“X-Frame-Options”设置为 DENY facebook fb.ui 共享方法

自定义搜索引擎拒绝在框架中的iframe中显示,因为它将“X-Frame-Options”设置为“sameorigin”

拒绝在框架中显示,因为它将“X-Frame-Options”设置为“SAMEORIGIN”

拒绝在框架中显示“https://www.google.co.in/”,因为它将“X-Frame-Options”设置为“sameorigin”

拒绝在框架中显示 LOCALHOST,因为“X-Frame-Options”设置为“sameorigin”

谷歌浏览器拒绝显示谷歌地图框架,因为 X-Frame-Options 设置为拒绝