クロスサイトスクリプトインクルード(XSSI)とは何ですか?質問する

クロスサイトスクリプトインクルード(XSSI)とは何ですか?質問する

最近、XSSIが複数のページで言及されているのを見ました。例えば、Web アプリケーションのエクスプロイトと防御:

ブラウザは、あるドメインのページが他のドメインのページを読み取ることを防止します。しかし、あるドメインのページが他のドメインのリソースを参照することを防止しません。特に、他のドメインから画像をレンダリングしたり、他のドメインからスクリプトを実行したりすることは許可します。含まれているスクリプトには独自のセキュリティ コンテキストがありません。スクリプトは、含まれているページのセキュリティ コンテキストで実行されます。たとえば、www.evil.example.com に www.google.com でホストされているスクリプトが含まれている場合、そのスクリプトは google コンテキストではなく evil コンテキストで実行されます。そのため、そのスクリプト内のユーザー データは「漏洩」します。

実際にこれがどのようなセキュリティ問題を引き起こすのかはわかりません。XSS と XSRF は理解できますが、XSSI は私にとって少し謎です。

XSSI に基づいたエクスプロイトをスケッチできる人はいますか?

ありがとう

ベストアンサー1

これは通常、JSONPを使用してデータを転送する場合に問題になります。ドメインBからデータを読み込むドメインAで構成されたWebサイトを考えてみましょう。ユーザーはサイトAとBに対して認証を受ける必要があり、同一生成元ポリシーにより古いブラウザが現在のページ(A)とは異なるドメイン(B)と直接通信できないため、開発者はJSONPを使用することに決めました。そのため、サイトAには次のスクリプトが含まれています。http://B/userdata.jsそれは次のようなものです:

displayMySecretData({"secret":"this is very secret", ...})

したがって、A は という関数を定義しdisplayMySecretData、サーバー B からインクルードされたスクリプトが実行されると、その関数が呼び出され、秘密データがユーザーに表示されます。

ここで、悪意のあるサーバー E が登場します。サーバー E は、A が JSONP を使用して B からデータを取り込んでいることを認識します。そのため、サーバー E は同じスクリプトを取り込みますが、displayMySecretData代わりにデータを盗む独自のスクリプトを定義します。次に、攻撃者はユーザーをだまして自分のサイトを訪問させます。ユーザーがサイトにアクセスして B にログインすると、ブラウザーは自動的に B の認証 Cookie を送信し、B からスクリプトを取得する要求を送信します。B は認証されたユーザーを認識し、期待どおりにスクリプトを返します。E はデータを取得し、あっという間に...

このように JSONP を使用して別のドメインから機密データをロードすることは非常に安全ではありませんが、人々はまだこれを使用しています。悪い考えです。

おすすめ記事