asp.net – 实现安全的“记住我”的最佳实践
有时候,我遇到某些不提供身份验证功能的Web开发框架,例如Authentication ASP.NET。
我想知道通过手工编码实现“记住我”登录功能时需要考虑哪些安全措施? 这是我通常做的事情: >将用户名存储在cookie中。用户名未加密。 还有什么我错过的,这可能会导致安全漏洞? 解决方法
该cookie应该始终是一个随机值过期。在某些情况下,您可以将状态存储为Cookie值,并且它不是一个严重的危险,例如用户首选语言,但应尽可能避免。转动HttpOnlyCookie,是一个好主意。
阅读A3:OWASP top 10 for 2010中的“断开的身份验证和会话管理”。本节中的一个重点是必须在整个会话中使用https。如果会议持续很长时间,那么这更重要。 还要记住,“记住我”创建了一个大窗口,攻击者可以在该窗口中“骑”在会话上。这给攻击者一个很长的时间(几个月),他可以在其中发送一个CSRF攻击。即使您有CSRF保护,攻击者仍然可以搭乘XSS和XmlHttpRequest进行会话(HttpOnlyCookie将防止完全劫持)。 “记住我”使其他威胁像xss,csrf,嗅到更严重。只要这些漏洞得到解决,那么你不应该有真实世界的黑客的问题。 实现“记住我”功能的最简单(和安全的)方法是修改会话超时您的web.config文件: <configuration> <system.web> <sessionState timeout="60"/> </sessionState> </system.web> </configuration> 将超时设置为高位,也许一个月左右。如果“记住我”复选框未选中,则存储更正常超时的会话变量(如24小时)。在每个请求的头文件中检查此会话变量。如果选中该复选框,则正常运行,并让asp.net照顾它。 如果会议没有到期,那么暴力就会更容易。这些值很大,但允许黑客花费数年时间来猜测会话ID是一个漏洞。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 使用EF5从4.5降级到4.0后无法加载文件或程序集“
- 我的带有Forms身份验证的ASP.NET MVC2应用程序甚至阻止访问
- asp.net-mvc – 如何在MVC3中存储用户首选项
- ASP.NET网站Windows窗体应用程序WCF服务:客户端凭据
- 在ASP.Net MVC中访问“应用程序”对象来存储应用程序范围的
- asp.net-mvc-3 – 如何使用Console.WriteLine在ASP.Net MVC
- ASP.NET 5:捕获和记录所有未处理的异常的建议方法是什么?
- asp.net-core – 什么应该是WEB API Action Method的返回类
- ASP.NET / IIS:404适用于所有文件类型
- asp.net-mvc-4 – Twitter Bootstrap nuget包差异?
- asp.net – NHibernate线程安全与会话
- asp.net-mvc – ASP.NET MVC中的动态(运行时生成
- asp.net-mvc – Visual Studio在剃刀语句中显示语
- asp.net-mvc – 具有Windows身份验证的MVC3 Web应
- asp.net-core-mvc – 如何创建从HttpContext.Tra
- asp.net-mvc – 使用浏览器栏将列表传递给MVC We
- 我的带有Forms身份验证的ASP.NET MVC2应用程序甚
- asp.net-mvc-3 – ASP.NET MVC3条件验证EditorTe
- asp.net – 将我的网站与BlogEngine.Net集成
- 在ASP.NET中使用回发??的jQuery模态对话框