私たちの顧客の中には、私たちのJSONPエンドポイントすべてで認識されているXSSの脆弱性について争っている人がいますが、実際に脆弱性を構成するかどうかは不一致です。私が何かを逃していないことを確かめるためにコミュニティの意見を聞きたい。明らかなjsonp xssの脆弱性
ので、任意のJSONPシステムと同様に、我々のようなエンドポイントを持っています。お客様がいることを訴えている
callback123({"foo":"bar"});
:cbパラメータの値が応答に戻って再生される
http://foo.com/jsonp?cb=callback123
CBパラメータでHTMLをフィルタリングしないので、次のような例が考えられます。
コンテンツタイプがtext/html
を返すURLの場合は、ブラウザがHTMLをレンダリングし、潜在的に悪質なjavascriptをonloadハンドラで実行するという問題があります。クッキーを盗んで攻撃者のサイトに送信したり、フィッシング詐欺用の偽のログイン画面を生成したりするために使用することができます。ユーザーがドメインをチェックして信頼すると判断したので、年齢を指定してログインします。
ここでは、コンテンツタイプのヘッダーをapplication/javascript
に設定しています。この場合、さまざまなブラウザでさまざまな動作が発生します。つまり、Firefoxは生のテキストを表示し、IEは「別名で保存...」ダイアログを開きます。私はそれらのいずれかが特に悪用されるとは考えていない。 Firefoxユーザーは、悪意のあるテキストを読んで、ブリッジから飛び降りて多くのことを考えさせることはありません。そして、IEのユーザーはおそらくダイアログとヒットのキャンセルとして保存することによって混乱するつもりです。
私は、IEユーザがセーブして.jsファイルを開くことに騙されて、マイクロソフトのJScriptエンジンを通過し、ユーザのマシンにあらゆる種類のアクセスを取得するケースを見ることができました。しかしそれは起こりそうにない。それはここで最大の脅威ですか、私が逃した他の脆弱性がありますか?
(明らかに、正当なJavaScript識別子を受け入れるだけのフィルタリングを入れて、ちょっとしたケースでは「修正」するつもりですが、逃したかもしれない他の脅威に関するダイアログが必要でした。)
"私が逃した可能性のある他の脅威 "とは何か疑問であり、顧客には「不満を抱いている」という神に感謝しています。 – TheBlackBenzKid
また、資料。書き込みとinnerHTML - 私はnginxサーバー上でアプリケーション/ javascriptヘッダーを使用するときに解決策としてこれらのコマンドを見つけました - 私のIEまたはその他の問題を解決します。このページは通常のテキストまたはコードを実行します。 – TheBlackBenzKid