Javascript Facebook中奇怪的JSONP响应
我想知道使用以下JSONP响应语法的原因是什么: 在URL下: 有:Javascript Facebook中奇怪的JSONP响应,javascript,ajax,jsonp,Javascript,Ajax,Jsonp,我想知道使用以下JSONP响应语法的原因是什么: 在URL下: 有: for (;;); {"t":"heartbeat"} {"t":"heartbeat"} {"t":"continue","seq":0} 我的问题是,到底为(;;)做了什么在这个JSONP响应中。它是如何解析的?这是出于安全原因。JSONP实际上不是JSON,它是一个执行的JavaScript文件 (;;)的存在,因此,如果Facebook之外的人试图访问该文件,他们就无法访问 注意:这不是JSONP,但您的浏览器不知道
for (;;); {"t":"heartbeat"}
{"t":"heartbeat"}
{"t":"continue","seq":0}
我的问题是,
到底为(;;)做了什么代码>在这个JSONP响应中。它是如何解析的?这是出于安全原因。JSONP实际上不是JSON,它是一个执行的JavaScript文件
(;;)的
存在,因此,如果Facebook之外的人试图访问该文件,他们就无法访问
注意:这不是JSONP,但您的浏览器不知道这一点。它将尝试运行它,然后陷入无限循环。这不是JSONP;它是JSON,如果用作JSONP,它会被巧妙地修改为失败
如果在
标记中包含该URL,它将在infintefor
循环中冻结浏览器
这可以防止攻击者将其包含在外部站点中,并调用对象。defineProperty
创建setter函数并绕过SOP。我看到没有函数调用,但技术似乎与之类似;技术恰恰相反。