Security 为什么不';是否存储原始密码?

Security 为什么不';是否存储原始密码?,security,passwords,Security,Passwords,我是网络开发新手。允许我存储用户的原始密码吗?我知道好的做法是使用salt存储散列密码,但是为什么不存储原始密码呢 是因为数据库很容易被黑客入侵,所以散列可以保护密码吗?还有其他原因吗?如果没有,我想保存原始密码,如果这样做是合法的。合法性取决于您居住的国家。但也有最佳实践。最好的做法是加密用户的密码。这样,如果有人闯入你的数据库,他们将无法获得一长串密码,并在ebay、yahoo mail和gmail中逐一尝试。对于许多站点,用户通常使用同一对用户名和密码 正如Jon在评论中指出的,散列和加密

我是网络开发新手。允许我存储用户的原始密码吗?我知道好的做法是使用salt存储散列密码,但是为什么不存储原始密码呢


是因为数据库很容易被黑客入侵,所以散列可以保护密码吗?还有其他原因吗?如果没有,我想保存原始密码,如果这样做是合法的。

合法性取决于您居住的国家。但也有最佳实践。最好的做法是加密用户的密码。这样,如果有人闯入你的数据库,他们将无法获得一长串密码,并在ebay、yahoo mail和gmail中逐一尝试。对于许多站点,用户通常使用同一对用户名和密码

正如Jon在评论中指出的,散列和加密之间当然有区别。哈希是一种单向的数据破坏过程,它以任意长度的字符串作为输入,并输出固定长度的字符串。此字符串的定义方式是,更改原始输入中的任何单个位都会导致哈希值不同。因此,如果您有散列,则无法重建原始文本(即无法恢复密码)

另一方面,正确的加密是一种技术,您可以恢复原始密码,知道密钥、密码等


通常,您希望散列密码,而不是加密密码:这不是必需的,而且设置起来更复杂。您也不应该恢复密码:只需重新生成密码。

是的,这是完全合法的,但绝对不建议以明文形式存储密码。这并不是说你的实时数据库会被破坏:即使是备份副本也可能被盗(你根本不知道)


当密码被盗时,这对您的实际用户来说是非常糟糕的,因为他们中很少有人在不同的网站上使用不同的密码。

根据法律,这是合法的。一些公司将密码存储为纯文本,以便可以恢复

然而,出于安全原因,这是一个坏主意。偶尔,一些公司被黑客入侵,他们的数据库被访问。在某些情况下,这会暴露数千用户的密码。这将严重损害您公司的形象,并且在密码未被散列时会带来更大的安全风险


如果你想让密码可以恢复,至少要加密它,这样通过访问数据库就不容易看到它。

想象一下,如果Facebook被黑客攻击,它不会加密用户的任何密码。Facebook本身拥有约2亿用户

如果2亿个密码都泄露给了某个邪恶的组织呢?许多用户使用与他们的邮件或任何其他敏感在线服务(如银行会计)相同的密码


Facebook一次也不会安全。您能在那里注册一个帐户吗?

我不知道这是否合法,但我建议您不要这样做,至少有三个原因:

  • 这不仅仅是黑客获取你的密码。对于多个帐户,用户通常拥有相同的密码(他们也不应该拥有)。那么,谁说我们可以信任您或其他合法访问此数据的人
  • 不管你认为你的服务器有多安全。服务器没有绝对的安全性。你应该考虑到它最终会被黑客攻击。不要相信它永远不会发生。抱最好的希望,但总是做最坏的打算
  • 我会利用我能得到的一切简单廉价的安全措施,不仅保护我的数据,而且保护用户的数据。而且使用salt+hash的方法很便宜。这将花费你2行代码。它

  • 我永远不会在你的网站上注册一个账户^^thnx来提及是的,我想这就是这个问题:)你将在哪个网站上实施这种做法?我们可以远离:-)你看!!!这既不难也不费时,那你为什么不去做呢?如果只是因为这是你以前从未做过的事情,那就不是不散列密码的好理由。学习不会花很长时间,而且听起来你已经理解了散列的工作原理。@Roger,密码对注册时填写密码的人来说是私有的。不加密密码不是很道德,但我想这是另一个需要讨论的话题。^^(1)在多个站点使用相同密码的人都是白痴。(2) 反正我也不会在Facebook上注册账号。不是因为它不安全,只是因为我认为我的朋友是我喜欢的时间,而不是在CAT5电缆的另一端的小丑:-(PaxDabLoLo):(1)你是对的,但遗憾的是它们存在,如果你想储存它们,就应该考虑它们。(2) 我同意这两点,但我也能理解那些想使用Facebook的人。但是二号仍然没有理由保存一个未加密的密码。不,我同意你@Wai,而且,因为你不是声明密码合法(没有支持权限)的人群之一,所以也可以向上投票。@paxdiablo,(2)是主观的,你不能告诉人们他们该做什么或不该做什么,除非你是一家公司的老板,并告诉你的员工为你的公司做些事情:D(1),就像Jens提到的那样,他们的存在是可悲的。他们的粗心大意是无法治愈的,除非他们被黑客攻击或其他什么。感谢upvote:)对多个站点(尤其是你不太关心的站点)使用相同的密码并不是因为个人的“愚蠢”。这是因为我们与人类打交道,他们的记忆非常有限,生成和记忆“随机字符串”的手段非常有限。我不是说“很好”。我是说,我们作为开发人员需要将这些人为因素发挥作用,并面对现实。当然,使用同一张通行证的人在他们的少数几个“重要”网站(例如那些处理你的钱的网站)上都是白痴;-)投票支持这个,删除我的。到