0

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

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

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

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

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

4

1 回答 1

0

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

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

另一方面,用户个人资料页面根本不应该包含任何密码信息。

于 2018-03-09T14:20:59.497 回答