cpo*_*ign 19 c# antiforgerytoken asp.net-mvc-3
我在登录页面上实现了防伪令牌.
现在我有一个用户按下键盘上的后退键,当他们在填写凭据后再次点击登录按钮时,他们会收到错误页面.
是否有一些更好的方法来处理这种情况,比如将它们重定向到新的登录页面?
登录页面是:/ account/logon
如果登录详细信息已成功,则用户将被重定向到:主页/索引页面,用户在该页面上按下按钮.
Ada*_*SFT 20
不要在登录页面上实现ASP.NET AntiForgeryToken.令牌基于其他条件中的用户名,登录页面假定攻击者已拥有系统凭据,以便能够利用该页面上的csrf.
但是,您应该在登录页面上使用某种形式的CSRF保护 - 请参阅https://security.stackexchange.com/a/2126/51772
我在这里写了一个完整的解决方案:https://richardcooke.info/en/2014/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));
}
Run Code Online (Sandbox Code Playgroud)
和代码放在你的视图中代替Html.AntiForgeryToken():
@if (ViewBag.FormToken != null)
{
<text><input name="__RequestVerificationToken" type="hidden" value="@ViewBag.FormToken" /></text>
}
else
{
<text>@Html.AntiForgeryToken()</text>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18037 次 |
| 最近记录: |