密码区分大小写检查

时间:2013-11-20 11:19:12

标签: security passwords

我正在考虑检查用户是否记住他们的密码是区分大小写的,以防他们的密码正确但忘记在密码中使用大写字符。

第一个想法是简单地添加一个带有小写密码哈希的字段并检查(当密码检查失败时)如果插入的小写密码与小写字母匹配

伪代码

if(getpasswordHash(password.toLower()) == databes_lower_hash){
           writeMessage("Remember that your password is Case Sensitive")
}
  1. 这会降低我的密码安全吗?
  2. 我应该使用不同的盐作为小写密码和普通密码吗?
  3. 每次有人输错密码时,我是否只是不打扰并只是提供有关区分大小写的消息?

2 个答案:

答案 0 :(得分:6)

是的,这会降低你的安全性。

您正在尝试通过将通常的双状态(通过/失败)方案更改为三状态(通过/失败,但您是接近/失败)方案来帮助用户。你介绍的这种中间状态肯定会降低你的安全性。

这是如何:

  1. 说黑客得到一些暗示,我的密码是4个字符。如果他采用纯粹的蛮力方式,那么他必须尝试(26*2)^4组合。但是一旦你实现了这个,那么只需要(26)^4组合就可以获得... 请记住,你的密码是区分大小写的 ...消息。从那时起,他必须为每个角色的小/大案件尝试最多2^4个组合。因此,蛮力障碍显着减少。

  2. 您现在必须在数据库中存储两个哈希值。即使您使用不同的盐,无论如何,您仍然要将蛮力障碍减少一半。为了破解密码,黑客现在可以部署两台专门用于破解一个哈希的计算机。有效地将时间缩短了一半。

  3. 当然这些都是极端情况。密码永远不允许4个字符长。也会有特殊的字符。军事类黑客很难有机会针对你的应用程序。你看不出有人能偷走你的密码表。但所有这些都可以进行辩论。有社会工程,系统漏洞,甚至你的应用程序都可以吸引严重的黑客。您的应用程序所需要的只是吸引人群。和坏人一起来了。

    所以经验法则是:

    1. 安全,始终遵循既定规范。其他地方都有地雷。

    2. 非常小心地尊重每个人的密码,因为这些是银行保险库本身的密码。

答案 1 :(得分:0)

1。)当然可以。但是到了同样的水平,就像首先只允许小写一样。

3。)将是一个更清洁的解决方案。