我发现这种语法在 Facebook 上用于 Ajax 调用。我在for (;;);响应开始时感到困惑。它是干什么用的?
for (;;);
这是调用和响应:
GET http://0.131.channel.facebook.com/x/1476579705/51033089/false/p_1524926084=0
回复:
for (;;);{"t":"continue"}
我有点晚了,TJ 基本上已经解开了这个谜团,但我想我会分享一篇关于这个特定主题的精彩论文,其中有很好的例子,并提供了对这个机制的更深入的了解。
这些无限循环是针对“Javascript 劫持”的一种对策,这种攻击通过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 对象的所有信息。
正如所承诺的,论文的链接。