web-dev-qa-db-ja.com

JSON応答にマジックプレフィックスを含めると、XSSI攻撃をどのように防ぐことができますか?

REST Gerrit Code ReviewのAPIを使用するプロジェクトで作業しているときに、彼らが私が奇妙だと思っていた何かを行っていることに気づきました Source

クロスサイトスクリプトインクルージョン(XSSI)攻撃を防ぐために、JSON応答本文は、マジックプレフィックス行で始まります。この行は、残りの応答本文をJSONパーサーに送る前に削除する必要があります。

)]}'
[ ... valid JSON ... ]

XSSIを防ぐために、応答本文の前にランダムに見える文字をどのように機能させますか?

13
ecnepsnai

XSSIは、JSON応答をJavaScriptとして評価しようとすることで機能し、シーケンス_)]}'_は、確実に構文エラーを生成することでこれを防ぎます。

不要なスクリプトの包含に対するさまざまな対策が提案されていますが、無限ループを配置するか(Facebook APIでfor(;;)が使用されているのを見てきました)、構文エラーが発生します(一部のGoogle APIでは_)]}'_を使用しています)例)は十分に健全で、下位互換性があることが示されています。 この記事 にはいくつかの追加の例があります。

そもそもXSSIが脅威であり、 same-Originポリシー に違反している理由がわからない場合は、 here をお読みください。

11
Arminius