加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 实现安全的“记住我”的最佳实践

发布时间:2020-12-15 18:35:15 所属栏目:asp.Net 来源:网络整理
导读:有时候,我遇到某些不提供身份验证功能的Web开发框架,例如Authentication ASP.NET。 我想知道通过手工编码实现“记住我”登录功能时需要考虑哪些安全措施? 这是我通常做的事情: 将用户名存储在cookie中。用户名未加密。 将密钥存储在cookie中。秘密密钥是
有时候,我遇到某些不提供身份验证功能的Web开发框架,例如Authentication ASP.NET。

我想知道通过手工编码实现“记住我”登录功能时需要考虑哪些安全措施?

这是我通常做的事情:

>将用户名存储在cookie中。用户名未加密。
>将密钥存储在cookie中。秘密密钥是使用基于用户名的单向函数生成的。服务器将根据用户名验证密钥,以确保此用户名不被更改。
>在Cookie中使用HttpOnly。 http://www.codinghorror.com/blog/2008/08/protecting-your-cookies-httponly.html

还有什么我错过的,这可能会导致安全漏洞?

解决方法

该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是一个漏洞。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读