public ActionResult Login(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
RegisteredUser usr = RegisteredUserBLL.AuthenticateUser(model.UserName, model.Password);
if (usr != null)
{
FormsAuthentication.SetAuthCookie(model.UserName + "|" + usr.RealName + "|" + usr.UserType, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{ /*
用于避免跳转攻击。攻击者伪造一个看起来指向你的网站的链接,
诱使用户点击,点击后,跳转到他的钓鱼网站上,而用户无法察觉。
甚至,攻击者可以产生一个跨站攻击(xss),
将用户cookie提交给他的网站,导致用户隐私泄露。
使用Url.IsLocalUrl( xxxUrl )
这个方法,可以判断这个URL是否指向本地网站,还是指向另一个网站
*/
return Redirect(returnUrl);
}
return RedirectToAction("Index", "Home");
}
ModelState.AddModelError("", "登录账号或密码不正确"); //
}
return View(model);
}
ASP.NET MVC中防止XXS跳转
最新推荐文章于 2020-02-28 21:31:43 发布