この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 37886|答える: 4

[ASP.NET] CSRF攻撃を防ぐためにAntiForgeryTokenを用いたmvc ajax

[リンクをコピー]
掲載地 2017/11/02 10:06:29 | | | |
プロジェクト内のサーバーへのajax投稿データに偽造防止タグが付与されていないことがよく見られ、CSRF攻撃を引き起こします。また、MVCにHtml.AntiForgeryToken()をフォームに追加することで偽造防止 Asp.net マークを追加するのは非常に簡単です。
Html.AntiForgeryToken()は、クッキーと入力に格納される暗号化された文字列のペアを生成します。 また、Ajaxの投稿にAntiForgeryTokenも導入しています
MVCにおけるHtml.AntiForgeryToken()は、クロスサイトリクエストフェイジャリー(CSRF:クロスサイトリクエストフェイジャリー)攻撃を防ぐための措置であり、XSS(XSSはCSS:Cross-Site-Scriptとも呼ばれる)とは異なり、XSSは一般的にサイト内の信頼できるユーザーを使って悪意のあるスクリプトコードをネットワークに挿入し、攻撃します。 一方、CSRFは疑似信頼されたユーザーがウェブサイトを攻撃するものです。
まず、コードの様子を次のように見てみましょう。

実行中、生成されたHTMLコードは以下のようになります:



テストボタンをクリックしてテストをリクエストし、下図のように偽造防止クッキーが含まれているか確認しましょう。



コントローラ内のコードは以下の通りです:

各コントローラーにValidateAntiForgeryToken機能を追加する必要があります。ユーザーがAntiForgeryTokenを持ってこない場合、以下の方法でフレンドリーなプロンプトを返すことができます。







先の:asp.net mvc BindAttribute バインディング機能
次に:CMMIとアジャイルの比較の一つ:両者の本質的な違い
 地主| 掲載地 2017/11/02 11:05:37 |
上記の方法では機能をカスタマイズしなければならず、デフォルトのValidateAntiForgeryToken機能は使えません

デフォルトでは、形の形で値を取ってから判断します



jQueryでpostメソッドをカプセル化し、偽造防止検証を行い、コードは以下の通りです:



 地主| 掲載地 2017/11/02 11:17:36 |
IsAjaxRequestで、それがAjaxリクエストかどうかを判断します

基本的に、IsAjaxRequest()はヘッダーにX-Requested-Withフィールドがあるかどうか、またそれがXMLHttpRequestかどうかを判定します

ドキュメントを見るのは無意味で、ソースコード次第です。
 地主| 掲載地 2021/02/20 19:22:26 |
ASP.NET CSRF 攻撃 Ajax 要求カプセル化
https://www.itsvse.com/thread-8077-1-1.html
掲載地 2021/12/09 18:37:56 |
テストテストテスト
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com