使用 iframe 的安全问题

信息安全 Web应用程序 网页浏览器 xss csrf
2021-08-19 05:04:01

由于技术挑战,我们正在寻求迁移到 iframe。通过迁移到 iframe,可以更轻松地管理技术问题。但我们并不完全确定 iframe 的安全隐患。

我们的网站是通过 SSL 呈现的,用户可能需要点击我们网站上的 SSL 链接。

  1. 是否可以在全新的浏览器中打开它并且仍然没有安全问题?
  2. 在使用 iframe 时,我们应该记住哪些事项以确保我们的网站保持安全?
4个回答

假设 iframe 具有相同的来源,因此您不必删除X-Frame-Options: sameorigin标头,或者Clickjacking在它们中不是问题。(指定了一个允许标记,但旧版浏览器不支持它)。

使用框架的主要剩余问题是,您最终可能会显示不受信任的内容,而用户仍会在地址栏中看到您的域。例如,可能存在缺少该target="_top"属性的链接,或者您可能想要有意显示外来内容。

例如,该外来内容可能会在您的布局中显示“您的会话已过期,请重新登录”的表格。地址栏将显示您的域。

iframe 的一个常见安全问题是点击劫持此问题通常使用x-frame-options http 响应标头来缓解。限制哪些页面可以被 iframe'ed 是很重要的。允许用户更改密码、修改设置的页面应该有一个“拒绝”的 x-frame-option。

使用 iframe 有很大的安全优势。例如,Google+ 按钮依赖于 iframe 的源继承规则来实现安全性

iFrame 可能会引入许多安全问题,具体取决于它们的实现方式和内容的提供位置。

以下是 Rook 提到的有关 iFrame 选项的一些详细信息

允许表格

如果启用此功能,iFrame 可能会通过网络钓鱼获取信息、伪装成您网站的登录表单等。

allow-scripts 如果启用了允许脚本,那么设置允许表单没有意义,因为可以通过 Javascript 在 DOM 中创建表单

如果您在 iFrame 中允许脚本,则它可能会执行 DoS 攻击、打开浏览器对话框或在页面上执行自动化,从而将信息暴露给其他人(referer 属性)或加载外部对象。

允许顶部导航

此权限允许 iFrame 充当嵌入式站点或网络钓鱼用户凭据。

允许同源

此属性旨在显示原始 HTML 文档(例如 HTML 电子邮件)与源代码相同。问题是,如果 URL 是可预测的,并且攻击者可以让用户直接查看 iFrame,那么沙箱的属性就会丢失。更糟糕的是,打开的网页可能会遍历opener对象并发现有关源页面的属性。

最后,有一种提议的 MIME 类型要求text/html-sandboxed始终在沙盒环境中查看的内容,但是许多浏览器误解了这一点,并且会以不寻常的方式显示数据(通常是一件坏事)。

您应该实现两件事来保护该应用程序:

1)添加X-frame-Option标头,即在apache中:

echo "Header always append X-Frame-Options SAMEORIGIN" >> /etc/apache2/httpd.conf && a2enmod headers && service apache2 restart

2) 为旧浏览器添加 Framebusting Javascript 代码。
警告!if (_top == _self)是错误的Framebusting代码!

看这里,有很多 framebusting 的例子(OWASP Video)。