哪个更安全 - iframe或CORS - 用于创建用于嵌入第三方网站的小部件?

时间:2014-08-11 06:04:16

标签: javascript security iframe cors

在构建旨在嵌入第三方网站的窗口小部件时,似乎有两种思路如何做到这一点:

  • 使用iframe s
  • 使用主页的DOM

使用iframe方法时,跨域请求不是问题,因为服务器认为请求来自其自己的页面。

使用主页面的DOM时,跨域请求是个问题,服务器需要使用适当的CORS标头进行响应才能正常工作。

这两种方法中的哪一种更安全,在实施这些方法时应考虑哪些安全问题?

1 个答案:

答案 0 :(得分:3)

您可能会发现这篇文章很有趣 - How to protect widgets from forged requests

  

您不希望此[widget]容易受到CSRF的攻击,因此您可以向页面编写iframe。根据原始继承规则,父站点无法读取CSRF令牌。然而,点击劫持(或像劫持)呢?因为CSRF你必须在iframe中,而x-frame-options无法帮助,对于帧破坏者也是如此

IFrame方法的否定

DOM方法的否定

  • 易受CSRF
  • 影响
  • 您服务器上的CORS标头将允许访问整个世界或预先注册的整个网站。虽然这本身并不存在漏洞,但必须注意确保没有敏感信息可用(例如用户数据)。没有办法仅限制对小部件的访问 - 您可以访问整个Origin(即协议,域和端口)。
  • 当您操作DOM时,可以从窗口小部件外部的其余页面访问这些对象。

摘要

最后,它取决于您的小部件的功能。父网站在用户上下文中自动提交表单或单击窗口小部件上的按钮会产生什么后果?如果有喜欢或+1按钮,主机页面可能会欺骗性地宣传他们的网站,方法是在未经用户知情或同意的情况下向您注册/ + 1。这适用于两种方法,只有攻击方法不同(即CSRF或Clickjacking)。

上述帖子中接受的答案提供了CSRF与Clickjacking的解决方案:

  

单击窗口小部件需要打开一个包含新页面的弹出窗口 - 一个iframe不够好,它必须是一个新窗口 - 完全在您的Web应用程序的控制之下。确认该页面上的操作,无论它是什么。

     

是的,这有些不太优雅,但目前的网络安全架构并没有为您提供更好的选择。

总之,IFrame方法似乎具有更高的安全性,并且在交互时实现弹出窗口可以减轻Clickjacking风险。