良好的安全的方式来记住用户复选框(Good secure way to remember a use

2019-09-28 03:01发布

我有一个要求输入用户名和密码登录页面。 这个页面都有一个复选框“记住我”。

认证是:对于提供的用户名,使用存储与用户数据库记录盐转化提供的密码哈希和比较哈希存储的散列。

当用户蜱箱子,我应该存储在他们的饼干让他们下次自动登录他们参观?

我在想,一个好办法就是保存自己的用户名和他们在一个cookie密码的哈希值,并重新进行身份验证在下次访问用户。 盐会保持一定距离存储在数据库中。

Answer 1:

这取决于你想维护的安全级别。 当我检查“记住我”中,我只希望它记住我的用户名。 我还是想提供我的密码是正常的。

在Cookie中保存用户名和哈希密码,似乎是一个坏主意给我。



Answer 2:

我不会散列密码存储在客户端的cookie。 我想创建用户和长寿命会话之间另一个抽象。 我会通过阅读下面的文章,以获取有关的挑战的一些想法开始:

http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/

关键部分那篇文章是不是所有的登录应该平等。



Answer 3:

如果你真的想保持登录的用户,那么你应该存储唯一的登录凭证在cookie中,没有用户名或密码散列。 当您的服务器收到一个登录令牌,你可以用你的坚持 - 登录用户的数据库进行比较,看看哪个用户令牌对应。 服务器应该存储登录令牌,与该令牌相关的用户名,以及到期时间。 一旦令牌已经使用应该失效,从而无法再使用。

这最大限度地减少泄漏到客户信息,并限制了攻击者的机会,如果他们设法窃取cookie的(这是比较容易做到的),以恢复合法用户的密码。

我强烈建议你也设置所有Cookie中的安全标志,以便他们只能隔着安全连接发送,并确保你有持久的登录一个相对较短的超时。 此外,它具有额外的授权检查,如确保登录令牌与一个特定的IP地址或浏览器指纹关联,以帮助防止随意攻击一个好主意。 这仍然不会严重阻碍一个坚定的攻击者,但可能会劝阻一些脚本小子。

最后,请考虑采取@Craig T的建议只记得用户名,而不是保持登录的用户。持久登录是非常危险的,所以你应该仔细考虑您的用户从此得到VS潜在成本的价值。

好你的正确储存在你的数据库的密码! 令人惊讶的是很多人都认为他们并不需要盐。



文章来源: Good secure way to remember a user checkbox