以安全的方式收集用户的密码拓扑

时间:2017-01-25 17:01:02

标签: security passwords password-protection

当用户在我们的网站上注册时,我们遵循一些明确定义的安全标准:

  • 生成盐
  • 哈希(盐+密码)
  • 将散列密码和salt存储在DB

最近,一个热门话题是“密码拓扑”。例如,我们应该阻止用户生成密码,如Ullllldd(大写,小写5倍,两位数),因为它们非常常见,如果攻击者只关注该拓扑,则更容易破解。我们现在想要生成有关我们网站上使用的最常见拓扑的信息。显然我们不能在我们的数据库中使用散列密码信息 - 我们无法从该散列中恢复密码信息。我们的想法是保留一个拓扑表,只要新用户注册就会填充该表。例如:

用户“joe”注册密码“pass”。我们看看拓扑“uuuu”是否已经存在。如果没有,请将其添加到count = 1的数据库表中。如果是,则将计数增加1.这当然有点冒险:如果我们的数据库受到攻击,我们的攻击者突然知道我们最常见的拓扑!

所以我的问题是:如何收集和存储密码拓扑信息而不会产生新的安全风险?

1 个答案:

答案 0 :(得分:0)

您的数据库应该是每个已使用拓扑的计数,而不会存储附加拓扑的用户ID。在第二个表上,存储在此数据库中表示的用户ID。

技巧来自填充和更新数据库。每当用户更改密码时,都会收集并存储有关密码拓扑的信息。在这里,您将能够计算旧的和新的拓扑并减少/递增计数。如果用户没有表示数据库,请添加它们,然后只需将新拓扑添加到计数中。