繁体   English   中英

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

[英]Which is more secure - iframe or CORS - for creating a widget intended for embedding on 3rd party sites?

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

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

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

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

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

您可能会发现此帖子很有趣 - 如何保护小部件免受伪造请求

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

IFrame方法的否定

DOM方法的负面影响

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

摘要

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

上述帖子中接受的答案有一个CSRF与Clickjacking的解决方案:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM