httpでMVC3の抗フォルゲリトークンを使用する
-
29-10-2019 - |
質問
このハックされたブログに関して, 、それ以来、提案されている反jsonを取得するハイジャックソリューションを実装するのをためらっています
JSONハイジャックを緩和するための推奨されるソリューションには、データを取得するためのリスト以外のJSON投稿が含まれます
代替ソリューション(オブジェクトラッピング)は、ソースコードアクセスがないサードパーティコントロールに問題を引き起こします。
セキュリティトークンの作成方法に関する代替ソリューション(以下にリスト)を実装する、またはWebページ内で安全に配信するコミュニティが侵害した実装を見つけることができません。また、自分の実装をロールアットするのに十分な専門家であるとは主張しません。
リファラーヘッダーに依存することはできません
バックグラウンド
このブログ JSONハイジャックに関するCSRFの問題について説明し、JSON投稿を使用してデータを取得することをお勧めします。 HTTP投稿を使用してデータを取得することはあまり休むことはないので、セッションごとまたはページごとに休憩アクションを可能にするより安心なソリューションを探しています。
別の緩和手法は、JSONデータをオブジェクトにラップすることです ここで説明するように. 。別のテクニックが見つかるまで、これが問題を遅らせるだけかもしれないと思います。
代替実装
私にとって、使用を拡張するのは自然なようです ASP.NET MVCのAntiForgeryToken jquery httpが私のjsonを取得します。
たとえば、上記のHaackedリンクによると、いくつかの機密データが得られた場合、次のコードは脆弱です。
$.getJSON('[url]', { [parameters] }, function(json) {
// callback function code
});
推奨されるポストワークアラウンドを使用してデータを取得することは安らかではないことに同意します。私の考えは、URLに検証トークンを送信することです。そうすれば、CSRFスタイルの攻撃者は完全なURLを知りません。キャッシュされた、またはキャッシュされていない、彼らはデータを取得することができません。
以下は、JSONがクエリを取得する方法の2つの例です。どんな実装が最も効果的かはわかりませんが、最初のものはこのデータをキャッシュする誤ったプロキシよりも安全であるため、攻撃者に対して脆弱になると推測するかもしれません。
http:// localhost:54607/home/adminbalances/encodedtoken-token-here
また
http:// localhost:54607/home/adminbalances?encodedtoken-token-here
...これは、MVC3の抗フォージュトークン、またはバリアントである可能性があります。SWTを参照してください)それ。このトークンは、上記で選択されているURL形式のインライン値として設定されます。
私が自分の解決策を転がさないようにするサンプルの質問
どのURL形式(上記)を使用してJSON Get(Slash、Affcuismarkなど)を検証するために使用しますか? http:// localhost:54607/home/adminbalances と http:// localhost:54607/home/adminbalances?encodedtoken-token-here データ?
エンコードされたトークンをWebページにどのように配信しますか?インライン、またはページ変数として?
トークンをどのように作成しますか? Antiforgerytokenに組み込まれていますか、それとも他の手段によって?
AntiforgerytokenはCookieを使用しています。この場合、バッキングクッキーが使用/必要になりますか? httpのみ? HTTPのみと組み合わせたSSLはどうですか?
キャッシュヘッダーをどのように設定しますか? Google Web Acceleratorの特別なもの(たとえば)
JSONリクエストSSLを作成するだけの意味は何ですか?
返されたJSONアレイは、安全のためだけにオブジェクトに包まれるべきですか?
このソリューションは、Microsoftの提案とどのように相互作用しますか テンプレートとデータビンディング 特徴
上記の質問は、私が先に進んで自分でこれをしていない理由です。言うまでもなく、おそらく私が考えていなかったより多くの質問がありますが、まだリスクがあります。
正しい解決策はありません