我是否滥用了防伪造功能.在我的一个页面中验证WebMatrix中的帮助程序

本文关键字:一个 WebMatrix 验证 帮助程序 是否 伪造 我的 功能 | 更新日期: 2023-09-27 17:58:27

在看到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)分支中),提交表单的用户是加载页面时登录的同一用户?

如果是这样的话,那么,我是否也正确地假设以这种方式使用这个类在登录页面中没有位置?

我是否滥用了防伪造功能.在我的一个页面中验证WebMatrix中的帮助程序

如果您查看codeplex上的源代码,AntiForgery使用AntiForgeryWorker,它使用TokenValidator,ValidateTokens方法确实会进行一些身份和用户名检查。如果没有抛出异常,它可能正在进行某种级别的验证,但使用"作为用户名。

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

然而,"伪造"登录页面的用例是什么?如果伪造者知道要提交的凭据,他们就可以自己登录。如果AntiForgery不能在这里发挥其全部潜力,这可能无关紧要。

相关文章: