【问题标题】:Why aren't original passwords stored?为什么不存储原始密码?
【发布时间】:2010-06-24 06:58:48
【问题描述】:

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

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

【问题讨论】:

  • 我永远不会在你的网站上注册一个帐户^^ thnx提及
  • 是的,我想这个问题就是这样:)
  • 您将为哪个站点实施此做法?我们可以远离 :-) 你看!!!
  • 这不难也不费时间,那你为什么不散列呢?如果只是因为这是您以前从未做过的事情,那不是不散列密码的好理由。学起来不会花很长时间,听起来您已经了解哈希的工作原理。
  • @Roger 不过,密码对于在注册期间填写的人来说是私有的。不加密它们不是很道德,但我想这是另一个要讨论的主题^^

标签: security passwords


【解决方案1】:

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

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

另一方面,加密是一种技术,您可以在其中恢复原始密码,知道密钥、密码等。

通常,您希望对密码进行哈希处理,而不是对其进行加密:这不是必需的,而且设置起来更复杂。您也不应该恢复密码:您只会重新生成它们。

【讨论】:

  • 投票赞成并删除我的。对于所有声称它是合法的人,我很想知道你断言的依据是什么。您必须是非常优秀的律师才能了解全球范围内的每条法律。
  • 我认为值得说明加密和散列之间的区别,以及何时使用它们。如果您需要能够恢复用户的密码,您将使用加密。如果没有,那么散列将是更好的选择。
【解决方案2】:

想象一下,如果 Facebook 被黑客入侵,它并没有加密任何用户的密码。 Facebook 本身拥有大约 2 亿(?)用户

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

Facebook 根本不会安全。你会在那里注册一个帐户吗?

【讨论】:

  • (1) 在多个站点使用相同密码的人是白痴。 (2) 无论如何,我不会在 Facebook 注册帐户。不是因为它不安全,只是因为我认为我的朋友是我喜欢与之共度时光的人,而不是 CAT5 电缆另一端的小丑:-)
  • @paxdiablo: (1) 你是对的,但遗憾的是它们存在,如果你想存储它们,应该考虑到它们。 (2) 我同意这两个,但我也能理解想要使用 Facebook 的人。但是仍然没有理由两个保存未加密的密码。
  • 不,我同意@Wai 的观点,并且由于您不是声称这是合法的人群中的一员(没有支持授权),因此也为您投票。
  • @paxdiablo,(2)是主观的,你不能告诉人们他们应该做什么,除非你是一家公司的老板并告诉你的员工为你做事:D(1)正如 Jens 所说,它们的存在是可悲的。他们的粗心大意是无法治愈的,除非他们被黑客入侵或其他什么。并感谢您的支持:)
  • 对多个站点(尤其是您不太关心的站点)使用相同的密码并不是由于个人的“愚蠢”。发生这种情况是因为我们正在与人类打交道,他们的记忆力非常有限,生成和记住“随机字符串”的手段也非常有限。我不是说“这很好”。我是说我们作为开发者需要发挥这些人的因素,并面对现实。当然,为少数“重要”网站(例如那些处理你的钱的网站)使用相同通行证的人是白痴;-)
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    是的,这是完全合法的,但绝对不建议以明文形式存储密码。并不是说您的实际实时数据库会受到损害:即使是备份副本也可能被盗(在您不知情的情况下)。

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

    【讨论】:

    • 您在哪个司法管辖区声称这是合法的?您是国际律师(或任何类型的律师)吗?
    【解决方案5】:

    依法是合法的。一些公司以纯文本形式存储密码,以便可以恢复。

    但是,出于安全原因,这是一个坏主意。偶尔,一些公司被黑客入侵,他们的数据库被访问。在某些情况下,这会暴露成千上万用户的密码。这将严重损害您公司的形象,并且在密码未经过哈希处理的情况下更存在安全风险。

    如果您希望密码可恢复,至少要对其进行加密,使其不易通过访问数据库来查看。

    【讨论】:

    • 您在哪个司法管辖区声称这是合法的?您是国际律师(或任何类型的律师)吗?
    • “有些公司这样做”并不意味着“因此它必须是合法的”。这也可能意味着“一些公司正在违法”。
    【解决方案6】:

    原始密码不会被存储,因为一旦数据库被黑客入侵,您的易受攻击的信息(包括您的密码)就会面临风险,因此一旦他们通过其他来源获得访问权限,加密将无济于事。根据您居住的地方,某些网站将以纯文本形式存储您的密码,例如,如果您的密码是 Appletree1234,它们会将您的密码以纯文本形式存储为 Appletree1234。据 Lifehacker.com 称,当您在网站上输入您的凭据时,它会根据数据库检查它们是否匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 2012-09-14
      • 2018-04-29
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 2015-04-09
      相关资源
      最近更新 更多