许多网站声称他们无法查看用户的密码。这是如何实现的?对于允许用户登录的网站来说,这是强制性的吗?是否有任何协议或法律要求他们以这种方式存储密码?
另外,这怎么可能呢?他们是否以加密格式将用户的密码存储在服务器上?
答案1
全部负责任的公司应该哈希(执行您所描述的过程)密码正确地(很容易做错事);是否相信他们的说法取决于你。
有法律规定公司可以谎报自己在做什么,但如果他们没有说明是否使用哈希密码,他们就不会被强迫在美国这样做,除非受到其他法律的约束,例如支付卡行业数据安全标准或者健康保险隐私及责任法遵守。
答案2
当您输入密码并点击“提交”按钮时,您发送表单的网站会以纯文本形式获取密码。没有办法绕过它,这就是 HTML 的工作方式。这不是绝对必要的,因为有替代系统,但据我所知,它们目前尚未在 HTML 或浏览器中实现。
话虽如此,
查看密码的网站是您登录的网站并不总是同一个网站——例如,Stack Exchange 网络使用 OpenID,这本质上是一种将身份验证委托给其他“提供商”(如 Google 或 Facebook)的方法。在这种情况下,您选择的 OpenID 提供商(例如 Google)可以看到您的密码,而 Stack Exchange 则看不到。
这发生在登录时;负责任的网站将计算一个哈希进而立即丢弃密码。 A哈希是一种加密版本的密码,即使他们无法在连续的时刻恢复原始密码后您已登录。换句话说,它们存储了
f(p)
密码的某个函数;当您希望再次登录时,它们可以读取您的新密码q
并检查是否,但它们无法从中f(p)==f(q)
恢复(或者,至少,这样做被认为是一个计算上不可行的问题)。 每当网站p
f(p)
将您的密码发回给您在纯文本中,例如在电子邮件中,它是大红旗他们没有负责任地处理安全问题。但作为用户,一般来说,你有决不判断他们是否立即丢弃纯文本密码或保留它们,除非发生这种情况。保持您登录网站的方法依赖于饼干并且不需要在任何地方存储您的纯文本密码。
从我们的回答中你可以推断出,密码验证在很多方面都存在问题,所以你应该切勿重复使用密码。最佳做法是依靠密码管理器其中,您的随机生成的密码受到永远不会离开您计算机的“主密码”的保护。