2016-05-31 66 views
0

我知道要存储密码,您必须对其进行哈希处理。我用password_hashpassword_verify来做到这一点。如何通过PHP验证密码?

但是我很惊讶有人说你不需要在哈希之前验证密码,因为无论如何你都要哈希它。

我认为至少这将是很好的做法,以验证用户输入与长度的密码超过字符的量或使用户能够输入特殊字符(*"'等)。至少要使密码强大。

所以在这里我有一些问题:

  • 是它认为是一个很好的做法无法验证有关密码任何东西,只有哈希呢?
  • 在散列密码之前有额外的安全措施进行验证吗?
  • 如果是这样,那么验证中应该考虑什么?

注意:我想从安全的角度来了解所有这些问题。

在此先感谢!

+4

相关:http://www.xkcd.com/936/ – ceejayoz

+1

[不限制密码。](http://jayblanchard.net/security_fail_passwords.html) –

+1

我会避免在这里使用“验证” 。你正在讨论的是*密码强度要求*。 – ceejayoz

回答

0

密码强度要求是上下文敏感的。你不谈论你的背景。

通常我会设置最小长度,并计算某种复杂度指数,以防止人们输入'aaaaaaaa'或'12345678'。

但是密码强度要求很烦人,尤其是当你决定了许多规则。

我经常尝试实施另一种策略:我选择我的访问者的密码。这不是一个新的想法;考虑一下信用卡的个人识别号码。这样做有很多好处:

  • 我的游客都没有选择密码时,往往 找别扭的东西。
  • 我绝对控制密码的复杂性。
  • 我不可能知道我的访问者经常使用的密码(并破解他们在其他网站上的帐户)。

还有一个缺点:访客必须“记住”我选择的密码。把事情简单化。四位数PIN已经有10000个变体。为了防止滥用,我限制了尝试次数。

对于需要非常安全,你可以提高密码的复杂性,并定期重新发出密码的网站。不要将密码存储在您的数据库中,只存储盐渍散列。不要通过电子邮件发送密码,而是将其显示在SSL安全的HTML页面中。如果安全性要求不高,可以忽略其中一些规则。