Hash 在这种情况下,我应该散列密码吗?

Hash 在这种情况下,我应该散列密码吗?,hash,passwords,Hash,Passwords,我的网站不包含太敏感的数据。我考虑按原样存储密码,因为如果用户希望通过电子邮件接收他们的密码(如果他们丢失了密码),那么我就可以将密码发送给他们,而不是像发送我创建的新密码那样给用户做任何繁琐和烦人的事(这也是无效的) 我应该按原样存储它们吗?密码是敏感数据-人们在不同的网站上使用它们,你不希望它泄露,或者让它可见-甚至对你或你的程序员都不需要。不,你应该散列它们。大多数用户在多个站点上使用相同的密码,因此即使您的站点不太敏感,也可能有其他具有相同用户名和密码的站点更敏感 如果用户忘记了密码,请

我的网站不包含太敏感的数据。我考虑按原样存储密码,因为如果用户希望通过电子邮件接收他们的密码(如果他们丢失了密码),那么我就可以将密码发送给他们,而不是像发送我创建的新密码那样给用户做任何繁琐和烦人的事(这也是无效的)


我应该按原样存储它们吗?

密码是敏感数据-人们在不同的网站上使用它们,你不希望它泄露,或者让它可见-甚至对你或你的程序员都不需要。

不,你应该散列它们。大多数用户在多个站点上使用相同的密码,因此即使您的站点不太敏感,也可能有其他具有相同用户名和密码的站点更敏感


如果用户忘记了密码,请向他们发送一个新密码。

否。从网站的角度来看,密码可能并不重要,但天真的用户往往会重复使用他们的密码。例如,您可能持有用户的银行帐户密码。您甚至应该应用随机salt,该salt与哈希密码(通常作为前缀字符串)一起存储,以便在站点或帐户之间无法识别相同的密码。

默认答案是“是”,以大写字母对密码进行哈希(和salt)


这是因为大多数用户在登录的所有站点上使用相同的密码,因此如果您的站点曾经被泄露,那么所有这些密码都将被公开。

我以前运行过一个网站,我可以建议:不要存储纯文本密码。许多用户在多个应用程序中使用相同的密码,如果您的网站被泄露,他们会责怪您


如果您的用户丢失了密码,请散列您的密码并发送一个新密码,并附上过期时间。

为什么会出现这种困境?您可能不应该自己开发帐户管理系统。使用一些密码管理的标准组件,保存调试和安全漏洞。

永远不要将密码以明文形式存储在数据库中。
请告诉我你还开发了哪些网站,这样我就不会在它们上面创建帐户。

肯定会对它们进行哈希处理,没有理由不这样做。您甚至可以在用户浏览器中加密密码,只需传输散列,例如使用openid(),不必担心密码管理。

我不确定我们是否可以为您做出本质上属于业务决策的决定。不知道您的具体要求,只有你才能做出决定。@Mitch:这不是一个商业决策,也不是基于需求。通常没有理由不散列密码。一般来说,我同意散列密码,但作为网站所有者,如果一个用户想在多个网站上使用相同的密码,我会责无旁贷(坦率地说,我也不在乎)。我想大多数用户都希望你对他们的信息保密,包括密码。让用户满意符合您的利益。保证密码安全并不难。@Jason-我不知道你是否与用户合作过,但在你的网站发现漏洞后,你不能不追究他们的责任。即使他们的密码是1234567。不可能。他们会责怪你,他们这样做是对的。在我看来,用户在任何地方都使用相同的密码是meAs的关键,有了OpenID,没有真正的理由强迫用户在你的网站上创建单独的帐户。当你是问题的一部分时,指责用户在多个网站上使用相同的密码是一种逃避(每个小网站都希望你创建一个新帐户)。好主意。更进一步说,我不知道普通人对OpenId的反应如何,但那将是我的最爱。@Kobi-我技术娴熟,不喜欢OpenId。为什么?首先,登录速度较慢,因为它需要页面重定向等,而不仅仅是SSL post。其次,由于我不希望任何OpenID提供商跟踪我登录的所有站点,也不希望所有站点凭据都放在一个篮子中,因此我必须为我加入的每个站点创建一个新的OpenID,这通常比在新站点上注册要慢。无论如何,由于基本注册表表单的复杂性,我不可能在面向消费者的网站上使用OpenID。@Greg-挑衅地说。我喜欢用我的openid登录,但如果用户是消费者,这几乎是不可能的。至于“一网打尽”——如果有人可以访问你的邮件,他们可以重置你的密码。在这方面,使用你的谷歌个人资料就像保存一样。嗯,我想我忘了在我的信息中有一些笑脸;-)