ASP.NET MVC 4和会话安全漏洞
而不是使用ASP.NET MVC用户的系统,我只是使用session,如下所示:
当他登录(用户名密码)时,我从数据库中获取相应的用户并设置: Session["UserId"] = fetchedUser.UserId; 然后,我总是检查他是否登录: if (Session["UserId"] != null && ...) 问题是,如果有人从登录用户复制ASP.NET_SessionId的值(例如:用户去卫生间,坐在他旁边的同事用铬检查员检查他的饼干),那么他将能够创建一个cookie在他的计算机中并充当该用户. 我的问题是: >如果会话ID保存在cookie中,为什么会话比cookie更安全? 解决方法
不使用Session作为身份验证机制的主要原因是它可能使您的应用程序容易受到
Session Fixation的影响.例如,如果用户使用HTTP协议到达您的站点并收到存储在该站点中的会话ID,则可能会出现问题. ASP.NET_SessionId cookie.用户可以稍后登录,即使您的登录页面可能在HTTPS下受到保护,会话令牌也已在HTTP下生成,这意味着它已使用明文传输.
回答你的其他观点:
存储在会话中的数据存储在服务器端,因此攻击者更难以篡改此数据.所有cookie存储都是此数据的标记,而不是数据本身.话虽如此,使用FormsAuthenticationProvider仍然更安全,因为这会在登录完成后创建新的身份验证令牌,而不是在会话启动时出于避免上述会话固定的原因.
内置提供程序已经适合用途,因此最好使用它而不是捏造另一种机制来满足您的要求.它也很容易扩展,因此您可以根据自己的需要进行自定义. ASP.NET用户身份验证创建加密票证并将其存储在cookie中,而不是存储对服务器端变量的引用:http://support.microsoft.com/kb/910443 我还会提请你注意注销机制以及如何保护它.尤其
详情:http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspx 此外,您可能需要在ASP auth cookie上设置“secure” flag以防止它被MITM攻击者通过HTTP泄露. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net下使用jquery 的ajax+WebService+json 实
- 什么是IIS和Asp.Net中的应用程序池?
- asp.net – ASP .net成员资格的交易
- asp.net-mvc – MVC3的官方文档
- asp.net-mvc – 什么是AsyncManager.Outstanding
- .net – 全局覆盖特定文化的所有实例的MonthName
- entity-framework – 将DbContext注入FluentVali
- asp.net-mvc – 有没有办法用asp.net mvc Razor
- asp.net – 当我按浏览器BACK按钮会发生什么?
- asp.net-mvc-2 – 如何通过ASP.NET MVC 2.0中的t