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

眺める: 44609|答える: 1

[出典] ValidateAntiForgeryTokenおよびAutoValidateAntiforgeryTokenの偽造防止タグについて詳しく説明しています

[リンクをコピー]
掲載地 2021/02/20 19:57:29 | | | |
CSRF攻撃を防ぐために、asp.net mvcはValidateAntiForgeryTokenの偽造防止攻撃機能を提供し、asp.net コアフレームワークの新バージョンでは、MicrosoftがAutoValidateAntiForgeryToken、特にValidateAntiForgeryTokenおよびAutoValidateAntiforgeryToken機能を提供しています その違いは何でしょうか?この記事では詳しく説明します。

CSRF攻撃を防ぐためにAntiForgeryTokenを用いたmvc ajax
https://www.itsvse.com/thread-4207-1-1.html

ASP.NET CSRF 攻撃 Ajax 要求カプセル化
https://www.itsvse.com/thread-8077-1-1.html
CSRFのコンセプト

CSRFクロスサイトリクエスト偽造はXSS攻撃と同様に非常に有害です。このように理解してください:攻撃者はあなたの身元を盗み、サーバーとしては完全に正当なものの、攻撃者が予想する行為(例えばあなたの名前でメールやメッセージを送信、アカウントを盗む、システム管理者の追加、さらには商品の購入など)を行います。 仮想通貨の送金などです。 Web AはCSRFの脆弱性を持つウェブサイト、Web Bは攻撃者によって作られた悪意のあるウェブサイト、ユーザーCはWeb Aの正当なユーザーです。


ASP.NET CSRF攻撃に対するMVC

ビューページで@Html.AntiForgeryToken()を使ってタグを追加し、ユーザーがページにアクセスすると、バックエンドが自動的にタグ付きの隠れたHTMLコードを生成します。以下の通りです。


<input name="__RequestVerificationToken" type="hidden" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusFRppj-dEGc" />
バックグラウンドコントローラーは[ValidateAntiForgeryToken(検証防止偽造トークン)フォーム提出の偽造を防ぐための機能。

ValidateAntiForgeryTokenとAutoValidateAntiforgeryTokenは異なります

AutoValidateAntiforgeryTokenAuthorizationFilterはValidateAntiforgeryTokenAuthorizationFilterを継承しますが、ShouldValidateメソッドのみを書き換えます。

AutoValidateAntiforgeryTokenプロパティは、すべての安全でないHTTPメソッドに対して偽造防止トークンの検証を可能にします。GET、HEAD、OPTIONS、TRACE以外のHTTPメソッドはすべて偽造防止トークンを必要とします。 これはグローバルフィルターとして適用され、デフォルトでアプリケーションの偽造防止トークン検証をトリガーできます。

ハイパーリンクのログインが見えます。

AutoValidateAntiforgeryTokenAttributeは、以下から継承されるAutoValidateAntiforgeryTokenAuthorizationFilterの呼び出しを検証します。 ValidateAntiforgeryTokenAuthorizationFilter、ShouldValidateメソッドは書き換えられました。trueを返す場合は検証が必要であり、falseを返すと検証されません、下図に示されているように:

ソースコードを分析する:



AutoValidateAntiforgeryTokenAttributeは、POST、PUT、PATCH、DELETEなどのすべての不正な手法に対して偽造防止トークン検証をグローバルに適用できるようにします。 したがって、[ValidateAntiForgeryToken]プロパティをすべてのアクションに追加する必要はありません。

使用するには、ConfigureServicesのStartupクラスメソッドに以下のコードを追加してください:


偽造防止認証を無視する必要がある場合は、[AntiforgeryTokenを無視する行動に帰属します。

時には、複数のリクエストにタグ付けしつつ、偽造不要のリクエスト(例えばGETベースの操作など)が必要な場合もあります。 このプロセスをより便利で快適にするために使えるツールはいくつかあります。 1つ目はAutoValidateAntiforgeryTokenプロパティです。 これはValidateAntiForgeryTokenプロパティのように動作します。 しかし、データ取得のために設計されたメソッド(GET、HEAD、OPTIONS、TRACE)によって呼び出されたアクションは自動的に無視されます。 これにより、データの取得方法に影響を与えずにデータを変更できるすべての手法に、迅速かつ簡単に偽造防止の手法を追加できます。

以下のコードはAutoValidateAntiforgeryTokenプロパティの一例です。


この例では、通常のインデックス操作(GET)はソースに関係なく動作しますが、POSTメソッドを用いたインデックス操作とDeleteメソッドとしてのRemoveUser操作は、クライアントに偽造防止トークンの使用を要求します。

関連情報をカスタマイズする

多くの人は、生成された隠れドメインの名前を自分のドメインに置き換えられるのか、またクッキーの名前を自分のものに変更できるのか疑問に思うかもしれません。

答えはイエスです。簡単に説明しましょう:

スタートアップのConfigureServicesメソッドで、デフォルト名を適切に変更するために以下を追加してください。


注:asp.net コアと asp.net の最大の違いは、コアはヘッダーを要求して検証パラメータを渡すことをサポートしています形を作るためじゃない!

private const string AntiforgeryTokenFieldName = "__RequestVerificationToken";
private const string AntiforgeryTokenHeaderName = "RequestVerificationToken";


ソースコードは以下の通りにご覧いただけます:ハイパーリンクのログインが見えます。

テストコード:





結果:test1メソッドにアクセスしようとすると400エラーが返され、test2メソッドにアクセスすると通したstrパラメータが返され、AutoValidateAntiforgeryToken機能はGETリクエストをインターセプトしないことがわかります。

(終わり)




先の:Fiddlerがリンクを置き換え、転送リダイレクトを要求します
次に:[ターン]SQL Server SQL Count
 地主| 掲載地 2023/07/08 22:07:08 |
ASP.NET MVCがXSS危険なコンテンツ検証(ValidateInput)を要求します
https://www.itsvse.com/thread-10624-1-1.html
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com