我是网站开发的新手。我可以存储用户的原始密码吗?我知道最佳实践是使用salt存储哈希密码,但为什么我们不存储原始密码呢?
是因为数据库容易被黑客攻击,所以哈希能够保护密码吗?还有其他原因吗?如果没有,只要合法,我想存储原始密码。
我是网站开发的新手。我可以存储用户的原始密码吗?我知道最佳实践是使用salt存储哈希密码,但为什么我们不存储原始密码呢?
是因为数据库容易被黑客攻击,所以哈希能够保护密码吗?还有其他原因吗?如果没有,只要合法,我想存储原始密码。
合法性取决于您所在的国家。但是有最佳实践。最佳实践是加密用户密码。这样,如果有人闯入您的数据库,他们将无法获得密码的长列表,并尝试在 ebay、雅虎邮件和 Gmail 中尝试每个密码。用户通常为许多网站使用相同的用户名和密码。
正如Jon在评论中指出的那样,哈希和加密之间当然存在差异。哈希是一种单向的数据破坏过程,它将任意长度的字符串作为输入,并输出固定长度的字符串。这个字符串被定义为改变原始输入中的任何单个位将导致哈希不同。因此,如果您有一个哈希值,则不可能重构原始文本(即不可能恢复密码)。
另一方面,加密本身是一种技术,可以在知道秘密密钥、密码等情况下恢复原始密码。
通常,您要对密码进行哈希,而不是加密:这不是必需的,而且更复杂。您也不应该恢复密码:您只需要重新生成它们。
想象一下,如果Facebook被黑客攻击了,它没有加密任何用户的密码。Facebook本身大约有2亿用户。
如果所有2亿个密码都泄露给某个邪恶组织会怎么样?许多用户使用与其电子邮件或其他敏感在线服务(如银行账户)相同的密码。
Facebook将一次性失去安全性。你还会在那里注册一个帐户吗?
我不知道这是否合法,但是无论如何,我建议您不要这样做,原因至少有三个:
是的,这是完全合法的,但绝对不建议以明文形式存储密码。而且,你的实际生产数据库并非唯一可能被攻击的目标:即使备份副本也可能被窃取(而你永远不会知道)。
当密码被盗时,这对于你的实际用户来说非常糟糕,因为很少有人在不同的网站上使用不同的密码。
根据法律规定,这是合法的。一些公司将密码以明文形式存储,以便于恢复。
然而,出于安全考虑,这是一个不好的想法。偶尔会有一些公司被黑客攻击并访问其数据库。在某些情况下,这会暴露成千上万用户的密码。这将严重损害您公司的形象,并且当密码未经哈希处理时,这甚至更加是一个安全风险。
如果您希望密码可恢复,请至少对其进行加密,以便通过访问数据库来查看密码变得不容易。
原始密码不会被存储,因为一旦数据库被黑客攻击,您的敏感信息就会受到威胁,包括您的密码,因此加密也无济于事。根据您所在的地区,有些网站会以明文形式存储您的密码。例如,如果您的密码是Appletree1234,则它们将以明文形式存储您的密码,即Appletree1234。根据Lifehacker.com的说法,在您输入凭据后,该网站会检查它们是否与数据库中的匹配。