我发现这种语法在Facebook上用于Ajax调用。我for (;;);对回应的开始感到困惑。它是干什么用的?
for (;;);
这是呼叫和响应:
GET http://0.131.channel.facebook.com/x/1476579705/51033089/false/p_1524926084=0
响应:
for (;;);{"t":"continue"}
我有点晚了,TJ基本上解决了这个谜,但是我想我会在这个特定主题上分享一篇很好的论文,其中提供了很好的示例并提供了对该机制的更深入的了解。
这些无限循环是针对“ Java劫持”的一种对策,Jeremiah Grossman发布了针对Gmail的一种攻击,这种攻击引起了公众的关注。
这个想法简单又漂亮:许多用户倾向于永久登录Gmail或Facebook。因此,您要做的就是设置一个站点,并在恶意站点的Javascript中覆盖该对象或数组构造函数:
function Object() { //Make an Ajax request to your malicious site exposing the object data }
然后<script>在该网站中添加一个标签,例如
<script>
<script src="http://www.example.com/object.json"></script>
最后,您可以阅读恶意服务器日志中有关JSON对象的所有信息。
如所承诺的,链接到论文。