Google会像这样返回json:
throw 1; <dont be evil> { foo: bar}
和Facebook的ajax有这样的json:
for(;;); {"error":0,"errorSummary": ""}
他们为什么要放置将停止执行并生成无效json的代码?
如果它无效,他们将如何解析它;如果您尝试评估它,它将崩溃吗?
他们只是将其从字符串中删除(似乎很昂贵)吗?
这有什么安全优势吗?
出于安全考虑,对此:
如果刮板在另一个域上,则它们将不得不使用script标签来获取数据,因为XHR无法跨域工作。即使没有,for(;;);攻击者也将如何获取数据?它没有分配给变量,所以不会因为没有引用而被垃圾回收吗?
基本上要获得跨域数据,他们必须要做
<script src="http://target.com/json.js"></script>
但是,即使没有前置崩溃脚本,攻击者也无法使用任何Json数据,除非将其分配给可以全局访问的变量(在这些情况下不是)。崩溃代码实际上无能为力,因为即使没有崩溃代码,他们也必须使用服务器端脚本来使用其站点上的数据。
相关分类