3

ファイアバグを見ると、Gmailは次のようなものを取得するためにGETリクエストを送信します。

while (true); &&&START&&&{"Success":true,"Body":{"Contacts":"[[,[,,\"83473f5sc6b17e0\",,[[,1,\"1\"]\n]\n[,,,[,,[,[,,,,,,,,,,,[[,1]\n
...
} &&&END&&&
  • これらのアレイは何ですか?これらはある種のRPCですか?
  • それらはクライアントコードによってどのように消費されますか?より具体的には、クロージャーライブラリはそれらをどのように使用しますか?
  • プレーンなjsonやRESTに対するこのアプローチの利点は何ですか?
4

1 に答える 1

6

通常のJSONのように見えますが、おそらくRPCへの応答ですが、本文が何らかの方法でエンコードされています(おそらく、サイズを減らして帯域幅の使用量を減らすため)。while (true);ちょっとしたことは、RPCエンドポイントを指すスクリプトタグを使用してデータへのクロスサイトアクセスを回避することです。ジューシーな個人情報に到達する前にスクリプトをクラッシュさせることで、悪意のあるサイトがデータを使用するのを防ぐことができます。JSON.parse代わりに、開始タグと終了タグの外側のすべてを取り除いた後、解析はまたは同様のものを使用します。

この種の圧縮されたエンコーディングは、Gmailのような巨大なサイトを運営していて、クライアント側を制御している場合に役立ちます。ただし、RESTはデバッグ(および文書化)が簡単なため、サードパーティの開発者にとって非常に便利です。ただし、このwhile(true)ビットは、GETを許可し、応答で機密データを伝送するAPIにとって不可欠です。

于 2012-01-08T04:53:14.797 に答える