如何在不降低网站安全性的情况下显示正确长度的屏蔽密码?



我的 Web 应用程序包含一个配置文件编辑页面,用户可以在其中更改其电子邮件地址、密码等。密码字段是 HTML"密码"类型,因此它会自动用项目符号字符掩盖其内容。密码作为哈希保存在数据库中,所以我不会将实际密码加载到字段中,我只是加载字符串"********",它显示为八个项目符号。然后,当表单提交时,我检查提交的值,如果不是"********",请保存新密码。

问题是用户经常发送帮助票证,说他们的密码没有正确保存,因为他们输入了 6 或 10 或任何长度的密码,但当他们返回个人资料编辑页面时会出现 8 个点。所以网站的行为符合预期,但我厌倦了向用户解释这一点,并试图思考如何在字段中显示准确的点数。

我唯一能想到的就是在保存密码时将密码长度与散列密码一起保存,然后使用该长度显示正确数量的点。但这不太安全,因为它会向黑客显示每个密码的长度。

另一种选择是将密码字段加载为空,希望用户不会对此感到困惑。或者我可以将此选项显示为"更改密码"表单,以指示该表单未尝试加载保存的密码。

但首先我想知道是否有技巧可以准确地显示这些点?

安全的解决方案是在专用页面上处理密码更改,独立于其他用户配置文件设置。

在密码更改表单上,请求旧密码,新密码以及可能的新密码确认。不要预先填充此字段,它们不应该也不能在不影响安全性的情况下正确显示。

另一方面,用户配置文件页面根本不应包含任何密码信息。

最新更新