ASP.NET MVC的跳转攻击问题
2013-09-05 18:47
477 查看
在ASP.NET MVC的自带的模板代码中,有这样一段,用来拦截非登录用户,使其跳转到登录页面,然后登录后在跳转回原页面。所以,期间有一个returnUrl参数用来保存原页面地址。在Login Action中,
Url.IsLocalUrl(returnUrl)用于避免跳转攻击。攻击者伪造一个看起来指向你的网站的链接,诱使用户点击,点击后,跳转到他的钓鱼网站上,而用户无法察觉。甚至,攻击者可以产生一个跨站攻击(xss),将用户cookie提交给他的网站,导致用户隐私泄露。
使用这个方法,可以判断这个URL是否指向本地网站,还是指向另一个网站。举一个例子,比如工商银行的登录问题,工行的网站叫 www.icbc.com.cn,有人仿造建立了一个网站叫 www.icbc888.cn,伪造网站看起来和工行的网站一样。并且在论坛上发布这样一个帖子:快来啊,工商银行派发红包啦,点这里:http://www.icbc.com.cn/account/login?returnUrl=www.icbc888.cn。用户看起来会觉得这个链接是工商银行的,但是当它点进去以后,会被跳转到www.icbc888.cn,后面的事情你可以想象到。
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("/\\")) ///为什么这么写???? return Redirect(returnUrl); return RedirectToAction("Index", "Home"); } ModelState.AddModelError("", "登录账号或密码不正确"); // } return View(model); }
Url.IsLocalUrl(returnUrl)用于避免跳转攻击。攻击者伪造一个看起来指向你的网站的链接,诱使用户点击,点击后,跳转到他的钓鱼网站上,而用户无法察觉。甚至,攻击者可以产生一个跨站攻击(xss),将用户cookie提交给他的网站,导致用户隐私泄露。
使用这个方法,可以判断这个URL是否指向本地网站,还是指向另一个网站。举一个例子,比如工商银行的登录问题,工行的网站叫 www.icbc.com.cn,有人仿造建立了一个网站叫 www.icbc888.cn,伪造网站看起来和工行的网站一样。并且在论坛上发布这样一个帖子:快来啊,工商银行派发红包啦,点这里:http://www.icbc.com.cn/account/login?returnUrl=www.icbc888.cn。用户看起来会觉得这个链接是工商银行的,但是当它点进去以后,会被跳转到www.icbc888.cn,后面的事情你可以想象到。
相关文章推荐
- ASP.NET MVC的跳转攻击问题
- 求解,ASP.Net MVC Redirect 无法跳转问题
- asp.net mvc razor布局页中a标签的href的跳转问题
- asp.net mvc razor布局页中a标签的href的跳转问题
- windows server 证书的颁发与IIS证书的使用 Dapper入门使用,代替你的DbSQLhelper Asp.Net MVC中Action跳转(转载)
- ASP.NET MVC 给ViewBag赋值Html格式字符串的显示问题总结
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- ASP.NET MVC ueditor图片上传失败问题
- asp.net mvc 参数传递的问题
- asp.net mvc 4 AntiForgery 提供的防伪标记适用于用户“”,但当前用户为“XX” 问题处理记录
- 注意!ASP.NET MVC 3 的一个 OutputCache 问题
- ASP.NET MVC中使用jQuery时的浏览器缓存问题
- ASP.NET MVC 5 局部视图不支持异步问题
- asp.net MVC实现Fullcalendar增删改的功能遇到的问题(包括datetimepicker冲突)
- HTTPS跳转框架HTTP Security--Asp.net和ASP.NET MVC下可自由配置URL的HTTPS跳转框架
- ASP.NET MVC3开发中遇到问题以及解决方法
- ASP.NET MVC 3 的一个 OutputCache 问题
- 大叔手记(20):ASP.NET MVC中使用jQuery时的浏览器缓存问题
- asp.net mvc webAPI 进程7204已退出,因此无法处理请求问题解决
- Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案 (精髓)