
在.net项目中防御csrf攻击的方法
1首先,在.net项目添加以下代码;
<% using (Html.BeginForm("Login", "Admin", FormMethod.Post))
{ %>
<%=Html.AntiForgeryToken() %>
<%= Html.ValidationSummary(true, "登录不成功。请更正错误并重试。") %>
<% } %>
2.代码添加好后,在对应的Action中用[ValidateAntiForgeryToken]进行标识即可;
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(Usr usr)
{
if (ModelState.IsValid)
{
var model = DB.Context.Single(p => p.SystemUser == true && p.UserName == usr.UserName && p.Password == usr.Password);
if (model != null)
{
authenticate.Login(usr.UserName, usr.Role);
return RedirectToAction("UserList", "Admin");
}
else
{
ModelState.AddModelError("", "提供的用户名或密码不正确。");
}
}
return View(usr);
}