登录页面上的防伪标记

我在登录页面上实现了防伪令牌。

现在我有一个用户按下键盘上的后退键,当他们在填写凭据后再次点击登录按钮时,他们会收到错误页面。

是否有一些更好的方法来处理这种情况,例如将它们重定向到新的登录页面?

登录页面是: / 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() } 

我的解决方案是:

如果再次点击登录页面,请重新加载页面。 这将确保防伪标记的新装载

一切都完成了