gpt4 book ai didi

c# - 我是否在我的一个页面中滥用了 WebMatrix 的 AntiForgery.Validate 助手?

转载 作者:行者123 更新时间:2023-11-28 01:59:25 26 4
gpt4 key购买 nike

在看到 AntiForgery.Validate() 方法错误(当表单 token 未验证时它应该这样做)并访问此站点后:http://msdn.microsoft.com/en-us/library/system.web.helpers.antiforgery(v=vs.111).aspx有关更多信息,看来我过去可能误用了它。

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

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

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

最佳答案

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

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

但是,“伪造”登录页面的用例是什么?如果伪造者知道要提交的凭据,他们就可以自己登录。如果 AntiForgery 在这里没有发挥其全部潜力可能并不重要。

关于c# - 我是否在我的一个页面中滥用了 WebMatrix 的 AntiForgery.Validate 助手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14777101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com