密码哈希和对用户的支持


10

我们最近转向了更好的密码存储策略,它带来了所有的好处:

  • 通过bCrypt后存储密码
  • 系统会在创建帐户时向用户发送激活链接,以确认地址的所有权
  • 忘记密码而没有安全问题,会将链接发送到他们的电子邮件。
  • 该链接将在24小时后失效,此时他们将需要请求一个新的链接。
  • 如果帐户是由我们的员工创建的,则会发送一封包含随机强密码的电子邮件。登录后,用户必须将其重置为我们不知道的东西,并且被密码加密了。

现在,这符合周围的“最佳实践”,但这增加了我们对不了解所有这些,而他们只想登录的普通用户的支持需求。

我们经常收到抱怨以下内容的用户的请求:

  • 密码错误(从他们需要重设的密码开始,他们经常在密码的末尾粘贴一个空格)。他们告诉我们他们正在使用什么,但是我们无法告诉他们他们的实际密码是什么。
  • 说他们没有收到我们发送给他们的电子邮件(激活,重置等)。通常情况并非如此,经过大量故障排除后,我们通常发现他们在电子邮件中打了错字,他们没有检查正确的电子邮件帐户,或者只是将其放入了垃圾邮件文件夹。

我们当然不能为他们尝试,因为我们没有密码。我们正在记录失败的尝试,但是我们也清除了他们使用的密码,因为它很可能是另一个帐户使用的密码,并且我们不想存储在纯文本日志文件中。这样,当他们报告问题时,我们几乎没有任何帮助。

我很好奇大多数人如何处理此类问题?


2
除了在系统发送给用户的电子邮件中更具描述性之外,我看不到在保持最佳实践的同时可以做些什么。让您希望可以给那些愚蠢的用户打耳光。
伯纳德

1
人们很愚蠢,您的用户比其他大多数用户都更愚蠢,我在这里看不到这个问题吗?

8
Jarrod您只是在侮辱您的用户。这里一个笨蛋就是你。您无法理解用户的计算机知识水平。没有冒犯的人,但是您正在为非计算机爱好者编写软件。如果您没有问题,则可能意味着所有这些可用性专家都将被解雇,因为他们并不是真正需要的。这只是“愚蠢的人”的问题,所以我们-聪明的开发人员只是禁止他们访问网络,问题就会消失了:)如果有人编写了一个只有作者可以使用的系统,您看不到问题吗?
Slawek

2
@Slawek:不,真的,人们很愚蠢。
Bryan Boettcher

@JarrodRoberson,不仅仅是他的用户-在处理面向公众的Web应用程序时,通常可以得到这些。也就是说,无论喜欢与否,它仍然占用支持资源,并且是一个非常有效的问题。
GrandmasterB 2012年

Answers:


7

密码错误(从他们需要重设的密码开始,他们经常在密码的末尾粘贴一个空格)。他们告诉我们他们正在使用什么,但是我们无法告诉他们他们的实际密码是什么。

可修复,而可以通过包含一个一次性GUID的链接来进行修复,该GUID可以将其登录并强制其重置密码。不要强迫用户复制粘贴。(此外,为什么不在表单的密码末尾删除空格。)

说他们没有收到我们发送给他们的电子邮件(激活,重置等)。通常情况并非如此,经过大量故障排除后,我们通常发现他们在电子邮件中打了错字,他们没有检查正确的电子邮件帐户,或者只是将其放入了垃圾邮件文件夹。

确保您的外发电子邮件已消除垃圾邮件(可能在某些常用邮件服务上设置了测试帐户),记录了所有发生的情况,并可能在尝试重新设置用户名时将其报告给用户(例如,将邮件发送到johndoee @ gmail .com失败,找不到用户,您拼写正确吗?)。另外,请用户注意拼写和垃圾邮件问题。

另外,正如其他人所说,OpenID和其他第三方身份验证也是一种选择。


有些人在密码中放置空格?
soandos '16

有些人会粘贴自动生成的密码,并偶然在开头和/或结尾添加空格。(阅读问题。)
Macke

3

我想说的是使用第三方身份验证方法,例如Facebook,OpenID,Google ...适合您用户的任何方法。但是,如果您的用户忘记了您的密码,也许他们将无法使用第三方身份验证系统...

根据您的情况,您可能可以使用其他系统,例如SSL客户端证书(对于最终用户而言,它们绝对很难安装,但是如果这是一家公司并且可以自动安装,那就太好了),Windows SSO,移动应用等


客户证书是一个糟糕的主意。如果出现问题,它们是不安全的,并且是远程修复的噩梦。Openid是个好主意
Tom Squires

证书如何不安全?
伯纳德

@bernard在该PC上的任何人都有证书。它也很容易与病毒get.one了
汤姆·斯夸尔斯

1
我同意它们的安全性仅与它们所在的计算机一样安全,但这完全是另一个问题。
伯纳德

3

您甚至需要这样做吗?您要做的第一件事就是确定您要保护的内容以及保护谁的人。也许付出最佳实践的代价并不值得,也许最佳实践甚至都无法阻止您的攻击者。

如果您要与NSA对抗,并拥有他们想要的东西,请放弃并让您的用户生活变得轻松。如果您有信用卡号,那么您将不得不忍受所需的安全级别所要求的问题,因为那里有坏蛋想要他们,并且会花时间和金钱来获取它们。它可以访问家庭相册,您是否需要所有安全性。

阅读有关Buce Scheiners的著作(秘密和谎言)的内容,这是理解安全性的一个良好的开端。


3

跳出来的第一件事是您的电子邮件将成为垃圾邮件。设置电子邮件以使其被视为真实电子邮件并非易事。我建议您研究如何阻止电子邮件被错误地标记(关于SO的单独问题?)

我建议的第二件事是为您的用户提供一键式启动网站/应用程序,以启动密码恢复电子邮件。拒绝通过电子邮件以外的任何其他方式来进行此操作,这是不安全的,并树立了错误的先例。


并不是说电子邮件是传输敏感信息的一种特别安全的方法。如果只有普通用户会被GPG和ssh键所困扰...
tdammers 2012年

@tdammers我同意它不是那么安全。但是,它已成为您在线身份(无论好坏)的重点。当前没有更好的可行选择。
汤姆·斯奎尔斯

就在这里。加密的电子邮件。我一直在使用它,这使我感到烦恼,即使是大型公司也不会为敏感电子邮件提供pubkey加密。实施起来并不难。我感到奇怪的是,存在法律(至少在荷兰是这样),使敏感信息必须使用SSL,但同时,可以接受通过纯SMTP发送相同信息。
tdammers

@tdammers我对其了解不足,无法自己推荐它。它的挑衅值得OP寻找到虽然
汤姆·斯夸尔斯

2

他们愿意打电话给您并大声告诉您密码,这一事实告诉您,对于这些用户而言,密码及其保护的信息并不重要。我绝对不会用银行密码来做任何这些事情。但是,有许多站点要求输入密码,而这些密码确实不值得使用。我为所有这些使用一个标准密码,并且越“嘿,那不是一个强密码”或“我们将为您设置一个密码并强迫您定期更改它”等等,我想使用的次数就越少该服务。我将与您生活中的“业务价值”人员进行简短的交谈,以了解实际上是否仅将纯文本保留在数据库中并根据要求通过电子邮件将其发送给其他人是否是更好的方法。

如果实际上这样做应该是安全的,那么您可以尝试使用我为我们编码的系统中的一位客户所做的事情。与对方通话时,进入数据库并将其电子邮件地址更改为您的电子邮件地址。然后上网并单击“忘记密码”。等待电子邮件,然后使用它登录。使用网站,将密码更改为“密码”或您在口头上同意客户的其他方式。将他们的电子邮件地址改回自己的地址,并告诉他们“所有设置,您的新密码现在处于活动状态!” 快乐的客户,您不必向他们解释发生了什么。


2
直接数据库修改本身就是安全漏洞。这意味着您可以模拟使用系统的任何用户。
伯纳德

3
我的客户有一个Windows应用程序,可以使用该应用程序为任何用户编辑任何字段,例如,如果他们收到了传真,说他们现在有了新的电话号码。当然是经过审核的。当然,当我看到这个书面程序贴在服务台附近的墙上时,我并不高兴。但是我开始接受它,并且有一条审计跟踪记录显示任何人致电并抱怨未经其同意重设密码的情况。问题是,并非所有事物都必须如此安全。用户告诉您这不是必须的。
凯特·格雷戈里

1
不幸的是,大多数用户对此一无所知。由软件应用程序的开发人员来实施最佳实践。
伯纳德

4
我同意这是一个很大的安全漏洞。我同意这可能是最合适的解决方案。但是,对于客户支持人员来说,临时更改客户的电子邮件地址以重置该用户的密码似乎非常愚蠢:如果要让客户支持人员重置密码,只需让他们直接进行。
约翰·巴塞洛缪

4
我还要指出,揭示纯文本密码用户所设置(事实上,在所有的明文存储密码),在我看来,巨大的比给客户支持能力,直接恶化改变用户密码。
约翰·巴塞洛缪

2

我过去在用户非常不识字的系统上使用的不得已的方法是将用户定向到屏幕,在屏幕上为他们提供了电话号码和确认号码。他们拨打了电话号码,通过手动方式验证了身份,然后阅读了确认信息。支持人员登录到一个单独的系统,输入该号码,然后获得第二个号码以退还给客户。客户使用第二个代码继续进入重置密码页面。该页面的客户端版本无法从支持人员的子网运行,并且支持屏幕也无法从客户端运行。

这不是安全的,因为支持人员可以使用vpn从一个位置运行两端,但是这足以进行审核,因为支持帐户被记录为对活动负责


-5

也许通过实施不是INSANE的安全规则。这样一来,您得到的实际上就是安全性降低了,因为该系统很难使用,以至于您的客户将重新密码给您和他们的朋友,以使其正常工作!

您不能只向他们发送NORMAL链接,然后向其发送下面的密码。如果链接被电子邮件客户端断开,则只需在表单中显示一个字段“激活码” ...“键入电子邮件中的激活码” ... 5位数字,这样他们就不会将0误认为O,等等。4信用卡可以使用数字,并且您需要如此简单的登录政策?如果代码不起作用,请使用TRIMmed字符串重复检查?我想它不会降低它的安全性,对吗?:)

对我来说,它也经常发生...我双击密码,结尾空间被复制。对于我来说,为什么peple不能仅仅检查支票失败而无法删除结尾的白色字符,然后重复该过程,我还是无法相信?然后,也许切换字母大写框让我检查我是否不小心按下了CL。

您过于复杂了。不是“重置密码”和“初始密码” ...而是“确认码”和“输入确认号,我们发送给您的电子邮件”,“没有电子邮件?已发送至xxx@yyy.com,请检查再次发送垃圾邮件,仍然没有吗?重新发送确认电子邮件”。在HTML正文中的链接。http://xxx.com/conf-12345-mymail-gmail-com.html。没有邮件客户端将打破这一点。


5
他提到的安全策略不仅是“ INSANE”,而且应该是所有“ SANE”应用程序的要求。诸如此类的通过电子邮件发送的链接必须在一段时间后过期,以防止重置密码(直接通过链接的任何方式,或通过计算机辅助算法对其进行绊脚石)。不过,在验证之前,可能应该修剪密码。用户很愚蠢。这是法律。答案不是减少我们的安全措施,而是采取积极措施来确保我们的用户理解正确的程序。
大林Seivewright

7
-1。这是大多数网站使用的一种理智的方法。如果我在网站上发布“忘记密码”,并收到一封包含密码的纯文本电子邮件,那么我将关闭我的帐户。
马特·格兰德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.