登录页面上的防伪标记
我在登录页面上实现了防伪令牌。
现在我有一个用户按下键盘上的后退键,当他们在填写凭据后再次点击登录按钮时,他们会收到错误页面。
是否有一些更好的方法来处理这种情况,例如将它们重定向到新的登录页面?
登录页面是: / account / logon
如果登录详细信息已成功,则用户将被重定向到:主页/索引页面,用户在该页面上按下按钮。
不要在登录页面上实现ASP.NET AntiForgeryToken。 令牌基于其他条件中的用户名,登录页面假设攻击者已拥有系统凭据,以便能够利用该页面上的csrf。
但是,您应该在登录页面上使用某种forms的CSRF保护 – 请参阅https://security.stackexchange.com/a/2126/51772
我在这里写了一个完整的解决方案: http : //richardcooke.info/keep-users-signed-in-after-asp-net-deploy/
这是从您的GET方法控制器中调用的必要代码:
private void SetANewRequestVerificationTokenManuallyInCookieAndOnTheForm() { if (Response == null) return; string cookieToken, formToken; AntiForgery.GetTokens(null, out cookieToken, out formToken); SetCookie("__RequestVerificationToken", cookieToken); ViewBag.FormToken = formToken; } private void SetCookie(string name, string value) { if (Response.Cookies.AllKeys.Contains(name)) Response.Cookies[name].Value = value; else Response.Cookies.Add(new HttpCookie(name, value)); }
和代码放在你的视图中代替Html.AntiForgeryToken():
@if (ViewBag.FormToken != null) { } else { @Html.AntiForgeryToken() }
我的解决方案是:
如果再次点击登录页面,请重新加载页面。 这将确保防伪标记的新装载
一切都完成了
- 在PresentationFramework.dll中发生了System.Windows.Markup.XamlParseException?
- 套接字连接已中止 – CommunicationException