0

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

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

4

1 回答 1

3

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

但首先:

  • 高价值应用程序不得具有记住我功能。
  • 中等价值的应用程序不应包含记住我的功能。如果存在,用户必须选择加入以记住我。系统应该强烈警告记住我的用户是不安全的,尤其是在公共计算机上
  • 低价值应用程序可能包括选择加入记住我功能。应该警告用户此选项不安全,尤其是在公共计算机上。

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

您可以使用此处描述的此策略作为最佳实践

  1. 当用户在选中记住我的情况下成功登录时,除了标准会话管理 cookie 之外,还会发出一个登录cookie。
  2. 登录 cookie 包含用户的用户名、系列标识符和令牌。系列和令牌是来自适当大空间的不可猜测的随机数。这三者一起存储在数据库表中。
  3. 当未登录用户访问该站点并显示登录 cookie 时,会在数据库中查找用户名、系列和令牌。
    1. 如果存在三元组,则认为用户已通过身份验证。使用的令牌将从数据库中删除。生成一个新令牌,并使用用户名和相同的系列标识符存储在数据库中,并向用户发出一个包含所有三个的新登录 cookie。
    2. 如果存在用户名和系列但令牌不匹配,则假定为盗窃。用户会收到措辞强硬的警告,并且用户记住的所有会话都将被删除。
    3. 如果用户名和系列不存在,登录 cookie 将被忽略
于 2013-09-09T18:55:33.357 回答