【问题标题】:How should I resolve this conflict between facebook iframes and browser security?我应该如何解决 facebook iframe 和浏览器安全之间的冲突?
【发布时间】:2011-06-10 06:23:32
【问题描述】:

我有一个作为 FBML 应用程序构建的 facebook 应用程序。最近我注意到 FBML 已被弃用,Facebook 现在只推荐 iframe 应用程序。我最初避免的事情是因为我的理解是 iframe 不是有效的 xhtml 代码,当时我试图为所有内容编写 100% 验证的代码。

但是我也不喜欢构建不受支持的应用程序,因此我着手更改我的应用程序以使用 iframe 显示方法使用完全呈现的 html 页面。

当我在自己的窗口中显示它们时,我的页面会自行完美呈现,但是当在 Facebook 提供的框架内呈现时,它们在 Safari 中完全空白。起初我很困惑,无法弄清楚为什么什么都没有渲染,直到一位使用 Internet Explorer 的朋友告诉我他看到了以下错误:

为帮助保护您输入本网站的信息的安全性,此内容的发布者不允许将其显示在框架中。

所以我开始在谷歌上搜索这个错误,发现论坛上有大量困惑的人试图让他们的框架代码正常工作,并发现这是一个错误,早在 2009 年引入 IE8 时,它就在一夜之间出现了。对 Microsoft 网站进行更多挖掘后发现,这是 Microsoft 为防止 click-jacking 而发明的安全功能。

明显的原因是服务器发送 X-Frame-Options 标题,而 Firefox 和 Internet Explorer 的响应是显示有关安全性和框架的错误消息,而Chrome 和 Safari 等 Webkit 浏览器会渲染无用的空白框。我拥有运行 apache 服务器的硬件并且我编写了所有的 html,而且我当然从未明确发送过 X-Frame-Options 标头,所以我必须假设我的 php 安装默认发送此标头在它作为全面安全增强功能的所有页面上(或者 Apache 正在这样做)。

显然,既然我知道是什么原因造成的,我可以找出是谁在发送标头并阻止它,但我的问题是关于最佳实践:预防点击劫持显然是一个有价值的原因,因为我的服务器链认为无需询问即可发送此标头非常重要,显然有人认为这是个好主意。然而,Facebook 应用程序在设计上会在 iframe 中从另一个网站加载内容,所以我很惊讶在互联网上很少或根本找不到关于此的讨论。有没有其他方法可以解决这个问题,或者它只是一个不应该为打算从 iframe 中查看的页面打开的情况?

此外,如果摆脱标头是正确的方法,有谁知道为什么要发送它以及在哪里关闭它?我在默认安装 apache 和 php 的雪豹服务器上运行。

【问题讨论】:

  • 我没有得到两个 S&A 标志。对我来说似乎是一个合理的问题。

标签: php security facebook apache iframe


【解决方案1】:

在 Apache 配置文件中搜索该选项

$sudo grep -ir 'x-frame-options' /etc/apache2

Credit

【讨论】:

  • 感谢您找到标志的建议 - 结果是:
  • 感谢您找到标志的建议 - 结果是:/etc/apache2/httpd_teams_required.conf: Header set X-Frame-Options "SameOrigin" 声称是一个 conf 文件应该添加到您想要 Teams Server 的任何虚拟主机中,这与将 Wiki Server 链接到 Mac OS X 有关。我认为我的任何站点中都没有包含此 conf 文件。此外,这个问题像许多 Facebook 问题一样神秘地消失了,似乎是断断续续的。
猜你喜欢
  • 2011-11-30
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
相关资源
最近更新 更多