2

AntiForgery.Validate()メソッドエラー(フォームトークンが検証されない場合に発生するはずです)を確認し、次のサイトにアクセスした後:http: //msdn.microsoft.com/en-us/library/system。詳細については、 web.helpers.antiforgery(v = vs.111).aspx を参照してください。これは、過去に誤用した可能性があります。

AntiForgery.GetHTML();の組み合わせを使用しました。およびAntiForgery.Validate(); ログインページに表示されますが、そこに配置するのが理にかなっているかどうかはわかりません。ログインしていない場合、ユーザーは常に ""(空の文字列)であるため、AntiForgeryクラスを使用すると、実際よりも多くのことができると当初は思っていたと思います。そして、このように、私の質問です:

上記の方法で実行される唯一のセキュリティチェックは、フォームを送信したユーザーが同じユーザーであることを(AntiForgery.Validate();をif(IsPost)ブランチに配置することによって)確認することだけだと思いますか?ページが読み込まれたときにログインしましたか?

もしそうなら、私もこのクラスをこのように利用することはログインページに場所がないと仮定するのは正しいですか?

4

1 に答える 1

1

codeplex のソース コードを見ると、AntiForgeryTokenValidatorを使用するAntiForgeryWorkerを使用しており、ValidateTokensメソッドは ID とユーザー名のチェックを行います。例外がスローされない場合は、何らかのレベルの検証を行っている可能性がありますが、ユーザー名として "" を使用しています。

if (!String.Equals(fieldToken.Username, currentUsername, (useCaseSensitiveUsernameComparison) ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase))
{
    throw HttpAntiForgeryException.CreateUsernameMismatchException(fieldToken.Username, currentUsername);
}

しかし、ログインページを「偽造」するユースケースは何ですか? 偽造者が送信する資格情報を知っていれば、自分でログインできます。ここで AntiForgery が最大限に機能しなくても問題ないかもしれません。

于 2013-02-28T04:57:34.740 に答える