我应该允许用户保存他们的密码吗?

时间:2013-09-08 16:13:25

标签: security cookies

目前,在我们基于网络的应用上,我们不允许用户保存他们的登录信息。登录本身只是一个安全的cookie,带有随机散列,指向后端的会话信息。没有HIPAA这样的问题,我们从来没有实现过保存凭证,因为这对我来说似乎不是一个好主意。

从安全角度来看,这有什么优点和缺点?我担心用户会获取已保存的cookie,但我们也会根据IP地址检查会话。我只是不想错过任何东西。

1 个答案:

答案 0 :(得分:3)

永远不要“保存”凭据,始终生成一个安全令牌,您将存储在客户端,并将其视为用户密码(实际上就是这样)。

但首先:

  • 高价值的应用程序绝不能记住我的功能。
  • 中值应用程序不应该包含记住我的功能。如果存在,用户必须选择记住我。系统应该强烈警告那些记住我的用户特别是在公共计算机上是不安全的
  • 低价值应用程序可能包含一个选择记住我的功能。应该向用户发出警告,该选项不安全,特别是在公共计算机上。

在用户登录后,始终向用户提供活动会话的概述,并为他提供终止某些会话的选项。

您可以使用此here as best practice描述的策略:

  1. 当用户成功登录并选中记住我时,除标准会话管理cookie外,还会发出登录cookie
  2. 登录Cookie包含用户的用户名,系列标识符和令牌。系列和令牌是来自适当大空间的不可取的随机数。这三个都存储在一个数据库表中。
  3. 当未登录的用户访问该网站并提供登录cookie时,用户名,系列和令牌将在数据库中查找
    1. 如果三元组存在,则用户被视为已验证。已从数据库中删除已使用的令牌。生成新令牌,使用用户名和相同的系列标识符存储在数据库中,并向用户发出包含所有三个的新登录cookie。
    2. 如果存在用户名和系列但令牌不匹配,则假定盗窃。用户收到强烈警告的警告,并删除所有用户记住的会话。
    3. 如果用户名和系列不存在,则登录Cookie 忽略