如何通过iframe中的自动提交表单实施XSRF攻击?

时间:2016-02-02 15:26:08

标签: iframe cors csrf

我正在开发单页应用程序并选择用于用户会话,cookie或localstorage的方案。特别是,我正在考虑CSRF攻击情形。最合理的CSRF攻击方案IMHO是在不可见的iframe中自动提交表单。但它是如何运作的?

假设我是maliciouswebsite.net的开发者,并且在我的网页上我创建了一个隐藏的iframe,指向bank.com网站上的某个页面,目的是让用户访问{{1}并登录maliciouswebsite.net,通过在隐形iframe中自动提交表单,不情愿地将钱汇给我。

但是在这种情况下,iframe中的代码不能从bank.com编写脚本,因为它将被视为Cross-Origin,并且浏览器不允许maliciouswebsite.net的主框架中的javascript操作使用maliciouswebsite.net不可见框架的元素。

另一种情况是bank.com只是呈现一个形式为maliciouswebsite.net的不可见iframe。所以这个iframe的起源仍然是action=bank.com/api/transfer_money?...。但在这种情况下,表单不会在maliciouswebsite.net看到用户的cookie,也不会被允许做任何事情,对吗?

1 个答案:

答案 0 :(得分:1)

  

另一种情况是,恶意网站只是提供了一个   带有表单动作的隐形iframe = bank.com / api / transfer_money?....所以   这个iframe的起源仍然是恶意网站。但就是这样   如果表单不会在bank.com上看到用户的cookie,也不会   允许做任何事,对吗?

是的,如果使用IFrame,这就是它的工作方式。

基本上,它从一个带有表单的页面开始,该表单自动提交到另一个域,就像你说的那样。有关示例,请参阅this answer

然后,为了不提醒用户提交表单,攻击者将该表单的页面嵌入隐藏的IFrame中。

只要用户已登录bank.com ,浏览器就会自动发送Cookie 。请记住,表单不需要查看Cookie(maliciouswebsite.net),只需要查看目标域(bank.com)。