如何在不限制其功能的情况下安全地嵌入 iframe?

信息安全 Web应用程序 javascript html 同源策略 框架
2021-08-16 09:58:52

我想将来自不受信任站点的 iframe 嵌入到 Web 应用程序中。框架:

  • 应该能够运行 Javascript 和浏览器插件(Flash 等)
  • 应该无法通过 Javascript 访问我的 Web 应用程序
  • _self、_parent、_top 链接应该在同一个 iframe 中打开页面,而不是完整的浏览器窗口(我不希望我的网站被其他网站替换)
  • _blank 链接应在新的浏览器窗口/选项卡中打开

(总而言之,我想尽可能少地限制嵌入式站点的功能)

有可能吗?

我知道 iframe 的沙盒属性,但我无法确定是否可以使用它来完成。

1个回答

默认情况下,沙盒属性将阻止顶部导航,并且可以配置为允许使用allow-scripts. 当前所有浏览器中的同源策略应防止任何具有来自不同来源(主机)内容的 iframe 使用 JavaScript 访问您的应用程序,沙盒属性即使对于同源 iframe 也会这样做。

所以简而言之,沙盒应该满足您的要求,尽管您需要测试是否_blank按预期工作。

但是,您应该知道,并非所有浏览器都支持沙盒属性,不支持的浏览器会将 iframe 视为非沙盒。