3

HTML5 のセキュリティ問題について勉強しています。Shreeraj Shah のプレゼンテーションはすべて見ました。withCredentials タグを true に設定して (応答メッセージで Cookie を再生する必要があります)、リクエストで Content-Type セットを text/plain に追加して (プリフライト呼び出しをバイパスするため)、自分のサーバーで基本的な CSRF 攻撃をシミュレートしようとしました。 . 攻撃を開始しようとすると、Access-Control-Allow-Origin ヘッダーが原因で XMLHttpRequest を実行できないとブラウザから通知されました。そのため、被害者の Web ページのヘッダーに * を挿入すると、withCredentials を true に設定してリクエストを送信すると、* 文字は使用できないとブラウザーに通知されました。同じドメインに保存されているWebアプリで同じものを作ろうとしましたが、すべてうまくいきました(ブラウザがそうでないためだと思います。

この種の問題を回避するために、最新のブラウザーが最近設定した新機能ですか? Shreeraj のビデオでは、リクエストが異なるドメインにまたがっており、それが機能したためです...

ありがとう、そして私の英語でごめんなさい:-)

編集:

Shreeraj のプレゼンテーションのように、CSRF 攻撃がうまく機能しない理由を見つけたと思います。2010 年に公開された以前の CORS ドキュメントを読んだところ、Access-Control-Allow-Origin が * に設定されている場合に with credential フラグが true に設定されているという推奨事項がないことがわかりましたが、最後の 2 つを見るとCORS に関する出版物 (2012 および 2013) のセクション 6.1 では、Access-Control-Allow-Origin が *.

リンクは次のとおりです。

以前のもの (2010): http://www.w3.org/TR/2010/WD-cors-20100727/

最後の 2 つ (2012 年、2013 年): http://www.w3.org/TR/2012/WD-cors-20120403/ --- http://www.w3.org/TR/cors/

これが私が話しているセクションです:http://www.w3.org/TR/cors/#supports-credentials

前の文書を見ても、見つからないのです。

これが、2012 年に Shreeraj Shah によって行われた単純な CSRF 攻撃が機能しない理由だと思います (もちろん、w3c の推奨事項に従う最新のブラウザーでは)。それは可能性が?

4

1 に答える 1

1

ブラウザー エラーが発生しても、要求は行われます (プリフライトがない場合)。

Access-Control-Allow-Origin単に別のドメインからの応答へのアクセスを許可するだけで、実際の HTTP 要求には影響しません。

たとえば、AJAX を使用してCORS ヘッダーが設定されていなくてもevil.com、POST 要求を行うことができます。example.com/transferMoneyexample.com

于 2013-10-31T16:13:42.517 に答える