2011-12-08 28 views
4

可能重复:
Why have “while(1);” in XmlHttpRequest response?
What does while(1) in Gmail do`while(1){}`如何帮助防止CSRF?

我最近偶然发现了与while (1==1) {}前面加上AJAX的返回数据的做法,提供针对CSRF攻击一些更安全,但我没有看到代码如何有用。有人可以解释吗?

+1

http://stackoverflow.com/questions/4828413/what-does-while1-in-gmail-do,http://stackoverflow.com/questions/871505/why-have-while1-in-xmlhttprequest-response – RightSaidFred

+0

@RightSaidFred:您可以投票来关闭重复的问题,而不是仅仅关联它们。 – derobert

+0

该死的,我真的在发帖之前就已经搜索过了。确实是重复的,但由于某些原因,我无法删除它 – Fluffy

回答

5

尝试执行CSRF攻击的远程站点需要使用JSONP调用来加载数据。 (在页面中注入脚本块) 如果您尝试创建JSONP调用,并将注入到脚本中的脚本注入到您的网页中,那么JavaScript虚拟机会超时无法加载数据(因为while循环)。所以攻击者不能看到数据。

这确保只有匹配相同源策略的客户端(通过正常的ajax调用加载数据)才能使用这些数据,从而防止任何攻击者从远程站点访问数据。