クロスサイトリクエストの偽造を防ぐために、一部のフォームでAntiForgeryTokenを使用し始めました。しかし、私はいくつかの奇妙な振る舞いをしているし、ちょうどこれがバグかどうかを明らかにしたいと思っています。私は自分のフォームでHtml.AntiForgeryToken()
コールを使用しています。フォームが投稿するアクションメソッドで[ValidateAntiForgeryToken]
属性を使用します。私はこの時点で塩を使用していません。AntiForgeryTokenとValidateAntiForgeryTokenで予期しない動作が発生しました
Html.AntiForgeryToken()
は、__RequestVerificationToken
の名前と__RequestVerificationToken_Lw__
という名前の隠し入力を生成します。どちらも同じ値を含む必要があります。
私はしかし、経験しています動作があること:
- クッキーが常に関係なく、ページ
- 隠し入力はあなたが得るたびに異なる値を持つのGET 何回同じ値を持っていませんページ
- ValidateAntiForgeryTokenは、毎回、CSRFシナリオの 異なるサイトから検証します。
- 私は外国人のサイトに隠された入力の値を変更した場合は、 トークンは(期待される動作を、しかし、隠された入力/クッキー値が異なる場合、なぜそれが を検証していますか?)検証しません
誰でもアイデアがありますか?
[OK]を、ちょうどhttp://stackoverflow.com/questions/7186253/why-is-antiforgerytokens-hidden-field-not-same-as-ましたそのマシンでは、別々にシリアライズされていることを示すマシン上のクッキーであるため、異なる値を含むように見えます。しかし、これは私のクッキーの値が決して変更されない理由を説明していません(私はそれを削除し、ページを再取得するときに新しいものが生成されます)。 – coalvilledave
この現象は、セキュリティ保護された要求でのみ発生するようです。 – coalvilledave