【问题标题】:Should email address be stored after logout?注销后是否应存储电子邮件地址?
【发布时间】:2011-10-16 22:13:34
【问题描述】:

我为 Web 应用程序编写了一个插件,它在登录表单中插入了“记住我”复选框。我的一位用户对注销后不记得他们表示惊讶!显然,已经注销的人应该保持注销状态,尽管有特定要求,我不会填写密码字段,因为这意味着以明文形式存储密码。

我的问题是,如果用户之前标记了“记住我”框,是否应该为登录表单预先填写电子邮件地址/用户名?
显然,如果在公共计算机上完成,这将有效地将他们的个人详细信息广播给使用该计算机的下一个陌生人,但用户无论如何都不应该在公共计算机上使用“记住我”选项。

这样做的安全考虑是什么?用户是否希望在退出后记住他们的某些详细信息?

编辑:在我看来,浏览器都具有记住表单值和登录详细信息的功能,这可能是不必要的。

【问题讨论】:

    标签: security language-agnostic passwords remember-me


    【解决方案1】:

    如果有人使用了“记住我”功能,您绝对应该预先填写电子邮件/登录信息。请记住,此功能 - 通常也称为“让我保持登录” - 旨在跨会话保持登录状态。这是一项可用性功能,可避免用户在每次访问网站时重新进行身份验证。

    不是在显式退出后保留登录凭据的任何部分的方法。是的,浏览器可以记住表单字段值,例如登录名,但大多数安全指南明确建议禁用此功能(请参阅OWASP Top 10 for .NET developers part 3: Broken authentication and session management)。

    在安全系统方面,我当然不认为有任何用户期望预先填充这些数据,因为绝大多数网站都不以这种方式运行。如果在明确同意的情况下降低进入门槛是可以的,但在用户明确退出或结束会话时以及行为与他们的预期不一致时则不行。

    【讨论】:

      【解决方案2】:

      “记住我”与“让我保持登录状态”不同。

      即使在用户退出后,许多银行网站也会使用“记住我”来保存用户名(但不是会话)(ING Direct 和 Citizens Bank 就是几个例子)。出于安全目的,它们通常会隐藏部分名称。

      为了让您的用户清楚了解,您可能希望将措辞更改为“保持登录状态”或类似的内容。

      【讨论】:

      • 我想你已经找到了问题的症结所在:语义。不同的人期望我们使用这些模糊的术语会产生不同的行为。出人意料的行为是不好的做法,但我们不能总是预测这对每个人意味着什么。我想我必须避免这个问题,并使其对任何配置站点的人都是可选的。从这里和其他地方的询问来看,大多数人似乎更愿意拥有这种便利。就我个人而言,我觉得这很可疑,并且会同意@Troy Hunt 的观点,“当用户专门退出时[这不好]”。
      • 此外,我喜欢银行隐藏确切用户名并仅表明该人已被识别的示例。如果更多人预料到这种行为,他们可能会更不愿意将他们的全部详细信息提供给那些“更新您的帐户”类型的网络钓鱼网站。
      【解决方案3】:

      假设他们的电子邮件地址被用作他们的用户标识符,这是我期望并且经常从许多我不期望高安全级别的应用程序中看到的行为。

      一个更安全的实现,它存储一个加密的标识符,并且只在用户尝试登录时询问密码。这是我从持有我的金融网站的网站上看到和期望的行为。确保浏览器不记得密码字段对于此类网站很重要。

      最好在复选框旁边放置关于不在公共计算机上使用“记住我”的警告。

      【讨论】:

      • 谢谢。这是我想听到的那种意见。
      猜你喜欢
      • 2016-04-06
      • 2012-10-30
      • 2019-04-28
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 2011-03-04
      • 2016-08-20
      相关资源
      最近更新 更多