在构建旨在嵌入第三方网站上的窗口小部件时,似乎有两种关于如何做到这一点的思路:
iframe
s使用该iframe
方法时,跨域请求不是问题,因为服务器认为该请求源自其自己的页面。
使用主页的DOM时,跨域请求是一个问题,服务器需要使用适当的CORS标头进行响应才能正常工作。
这两种方法中哪一种更为安全?在实现每种方法时应考虑哪些安全问题?
您可能会发现这篇文章很有趣-如何保护小部件免受伪造的请求:
您不希望此[widget]容易受到CSRF的攻击,因此您将iframe写入页面。根据起源继承规则,父站点将无法读取CSRF令牌。但是,点击劫持(或likejacking)呢?由于CSRF,您必须位于iframe内,并且x-frame-options不能解决问题,对于帧破坏者也是如此
Origin
(即协议,域和端口)的访问权限。最后,它取决于小部件的功能。父站点自动提交表单或在用户上下文下单击窗口小部件上的按钮会产生什么结果?如果有一个“赞”或“ +1”按钮,则在用户不知情或未同意的情况下,通过向您注册“喜欢” / + 1可以在托管页面上欺诈性地推广其网站。这将适用于两种方法,只有攻击方法有所不同(即CSRF或Clickjacking)。
上述帖子中接受的答案提供了CSRF与Clickjacking的解决方案:
单击窗口小部件需要打开一个包含新页面的弹出窗口-iframe不够好,它必须是新窗口-完全在您的Web应用程序的控制之下。确认该页面上的操作,无论它是什么。
是的,这有点不雅致,但是当前的Web安全体系结构没有给您任何更好的选择。
总之,IFrame方法似乎总体上具有更高的安全性,并且在交互时实施弹出窗口可减轻Clickjacking风险。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句