关于在数据库中保存密码的问题

时间:2011-08-11 12:38:32

标签: sql passwords md5 sha1

我目前正在阅读一本关于PHP / MySQL的书。我主要对密码散列感兴趣。明文由md5 / sha1或某些哈希函数转换为“乱码”并存储在数据库中。好吧,我明白了。黑客,即使他们访问数据库仍然存在找到明文的问题。

我的问题(我希望这不是愚蠢的)在大多数(或者所有人都会想到)拥有用户密码的网站上,如果用户忘记了他/她的密码,那么网络管理员会将其发送给用户的电子邮件。好的,但是网络管理员如何拥有明文密码?

6 个答案:

答案 0 :(得分:1)

如果密码可以发回给您,则密码尚未进行哈希处理 - 它已加密(希望!)。从广义上讲,哈希不是一种可逆行为。一旦进行了散列,比较某些内容的唯一方法是以相同的方式散列该内容并查看散列是否相同。你永远不能真正“解开”它。

总结 不应以明文形式显示。如果他们拥有它并且可以发送给您,则应该加密。他们是否应该保留加密版本是安全顾问辩论的一个要点。也就是说,可能是明文。在一天结束时,“密码”没有什么特别之处,它们只是字符串并且可以存储 - 但是因为它们构成了保护事物的重要键,所以希望它们得到妥善处理。

人们认为应该做的常见方式是 加盐并哈希。 我认为这是最常用的方式,如果你的哈希算法很好。有些事情需要注意,但这超出了这个答案的范围。

Best way to store password in database

警报:

我曾经有一位来自英国宽带提供商的客户服务代表告诉我我的密码是什么......当人们以可逆格式存储我的密码时,我有点粗略,我非常关心他们允许客户服务人员看到密码,他们是安全系统的弱点。从那以后我就离开了这个提供者。

答案 1 :(得分:0)

我认为我从未见过这样做的网站。通常情况下,它们会向您发送一个链接,当您单击该链接时,会重置密码并将您发送到必须输入新密码的页面。有些网站会向您发送一个临时密码,并敦促您更改密码。请注意,在这两种情况下,网站都不需要原始的明文。

如果我点击密码重置链接并以明文形式发送了我的原始密码,我对该网站的意见非常低!

答案 2 :(得分:0)

所有好网站都不会发送密码,而是设置新密码的链接。这使他们可以避免使用明文密码。

答案 3 :(得分:0)

他不能 - 如果您使用的网站具有向您发送自己密码的功能,您应该考虑切换到另一个网站,因为这个网站根本不安全并且以明文形式存储密码。 应该可用的唯一功能是将密码重置为某些随机值。

答案 4 :(得分:0)

只有当他的哈希算法很弱时,网络管理员才能为您提供明文密码,他有办法检索您的明文密码,并且能够向您发送一个密码。当然,如果密码根本没有哈希,那么发回你的明文密码就很容易了。但你为什么要一个呢?正如kstaruch建议的那样,切换到另一个网站,因为这样的网站非常不安全。

如果用户忘记了密码,请向用户提供重置密码的选项。当然,在你给他这个选项之前,一定要先验证他的身份(也许是秘密问题)。

答案 5 :(得分:0)

您不会以明文或任何形式的对称加密密码存储任何密码,除非您的目标是有一天像SONY一样受欢迎。

首先:

http://www.engadget.com/2011/04/26/sony-provides-psn-update-confirms-a-compromise-of-personal-inf/

然后:

How should i save my Password?

ALSO:

你应该尝试在客户端HASH密码,除非你使用https协议,这可能是矫枉过正,但尝试找到一些javascript HASH功能,使你能够将密码的哈希发送到服务器进行验证