movie api javascript - なぜGoogleはJSONレスポンスの前にwhile(1);をつけるのか?

imdb api javascript / 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 Hijackingは、Cross-Site Request Forgeryに似た攻撃で、GETリクエストに配列リテラルとしてセンシティブなデータを返すアプリケーションから、攻撃者がクロスドメインのセンシティブなJSONデータにアクセスすることができます。以下に、配列リテラルを返すJSONコールの例を示します。

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

ステップ1:認証されたユーザーに悪意のあるページを訪問させます。ステップ2:悪意のあるページは、ユーザーがログインしているアプリケーションの機密データにアクセスしようとします。これは、同一起源ポリシーがスクリプトタグには適用されないため、HTMLページにスクリプトタグを埋め込むことで行うことができます。

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

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

});