javascript - Comments are not permitted in JSON - 为什么Google要在他们的JSON响应中预置while(1);?

JSON comment / javascript / json / ajax / security

为什么Google会优先使用 while(1); 他们的(私有)JSON响应?

例如,这是在Google日历中打开和关闭日历时的响应:

while (1);
[
  ['u', [
    ['smsSentFlag', 'false'],
    ['hideInvitations', 'false'],
    ['remindOnRespondedEventsOnly', 'true'],
    ['hideInvitations_remindOnRespondedEventsOnly', 'false_true'],
    ['Calendar ID stripped for privacy', 'false'],
    ['smsVerifiedFlag', 'true']
  ]]
]

Mickael Lherminez



Answer #1

JSON劫持顾名思义是一种类似于跨站请求伪造的攻击,攻击者可以从应用中获取跨域敏感的JSON数据,这些应用将敏感数据作为数组字元返回GET请求。下面是一个返回数组字元的JSON调用的例子。

[{"id":"1001","ccnum":"4111111111111111","balance":"2345.15"}, 
{"id":"1002","ccnum":"5555555555554444","balance":"10345.00"}, 
{"id":"1003","ccnum":"5105105105105100","balance":"6250.50"}]

步骤1:让经过认证的用户访问一个恶意页面。第二步:恶意页面将试图从用户登录的应用程序中访问敏感数据.这可以通过在HTML页面中嵌入脚本标签来实现,因为同源策略不适用于脚本标签。

<script src="http://<jsonsite>/json_server.php"></script>
Object.prototype.__defineSetter__('ccnum',function(obj){

secrets =secrets.concat(" ", obj);

});