Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我是否在我的一个页面中滥用了WebMatrix的AntiForgery.Validate Helper?_C#_Html_Forms_Security_Webmatrix - Fatal编程技术网

C# 我是否在我的一个页面中滥用了WebMatrix的AntiForgery.Validate Helper?

C# 我是否在我的一个页面中滥用了WebMatrix的AntiForgery.Validate Helper?,c#,html,forms,security,webmatrix,C#,Html,Forms,Security,Webmatrix,在看到AntiForgery.Validate()方法错误(当表单令牌未验证时,应该执行此操作)并访问此站点后: 关于更多信息,我可能在过去滥用了这个 我使用了AntiForgery.GetHTML()的组合;和防伪。验证();在登录页面上,但不确定将其放在那里是否有意义。在没有登录的情况下,用户总是“”(空字符串),所以我想我最初认为使用AntiForgery类做的比实际做的更多。因此,我的问题是: 我是否正确地假设上述实践执行的唯一安全检查只是(通过在if(IsPost)分支中放置AntiF

在看到AntiForgery.Validate()方法错误(当表单令牌未验证时,应该执行此操作)并访问此站点后: 关于更多信息,我可能在过去滥用了这个

我使用了AntiForgery.GetHTML()的组合;和防伪。验证();在登录页面上,但不确定将其放在那里是否有意义。在没有登录的情况下,用户总是“”(空字符串),所以我想我最初认为使用AntiForgery类做的比实际做的更多。因此,我的问题是:

我是否正确地假设上述实践执行的唯一安全检查只是(通过在if(IsPost)分支中放置AntiForgery.Validate();来确保提交表单的用户与加载页面时登录的用户相同


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

如果您查看codeplex上的源代码,使用哪个,则
ValidateTokens
方法会进行一些身份和用户名检查。如果没有引发异常,它可能会执行某种级别的验证,但使用“”作为用户名

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

然而,“伪造”登录页面的用例是什么?如果伪造者知道要提交的凭据,他们可以自己登录。如果这里的防暴药没有发挥其全部潜力,这可能无关紧要。

谢谢你的回复!但这里真正的问题是:除了用户名验证之外,它还做什么(如果有的话)检查,我应该在登录页面中包含它吗?当一个页面闲置太久时,我会得到一个YSOD。我想我可以确保“AntiFogery.Validate();”方法出现在我的页面中检查用户是否登录并再次请求其凭据(如果没有)的部分之后。