0

私は AntiForgeryToken について読んでいましたが、実際の使用法や重要性を理解していません。私は人々が次のような形でコードを書いているのを見ました

@using (Html.BeginForm("Create", "Register")) 
{ 
    @Html.AntiForgeryToken()  
}

それが何をするか....一意のトークンを生成し、フォームが投稿されると、この一意のトークンが渡され、同じ一意のトークン値でCookieが渡され、サーバー側で2つの一意のデータが比較されます。等しいかどうか。そうでない場合は、なんらかの改ざんが発生します。

他のフォームフィールドの値が変更または改ざんされた場合、その改ざんをどのように判断できるかわかりません。非表示フィールド内に貴重なデータを保存することがよくあるとします。その非表示フィールドの値を保護する必要がある場合、AntiForgeryToken はどのように役立つのでしょうか?

AntiForgeryToken を使用してそれらの貴重なデータをその中にラップし、後でサーバー側で比較できますか。

私のページに3つの貴重なデータを入れることができるサンプルコードを誰かに教えてもらえますか?改ざんされた場合、ユーザーにわかりやすいメッセージが表示されます. 方法を教えてください。ありがとう

4

1 に答える 1

6

AntiForgeryToken の背後にある考え方は、「偽の」ソースからデータが投稿されるのを防ぐことです。偽の (偽造された) フォームを使用する攻撃者は、ユーザーをだまして、現在のセッション コンテキストを使用してあらゆる種類のデータを送信させることができます。ご想像のとおり、これはかなりの損害を与える可能性があります。

これを防ぐ方法は、悪者が偽造できないように、セッションに保存されるユーザー固有のデータ (ランダムなもの) を含む隠しフィールドをフォームに作成することです。この場合、ユーザーがデータを投稿したが、ユーザー固有のトークンを持っていない場合、悪意のあるものとして扱うことができます。

偽造防止トークンは、投稿されたデータが「強化」されているかどうかを検出するためのものであると誤解していると思いますが、そうではありません。

これについては以上です。

于 2013-09-24T10:31:47.300 に答える