我们如何执行强密码?

时间:2020-03-06 15:05:14  来源:igfitidea点击:

有很多技术可以在网站上强制使用强密码:

  • 请求密码通过复杂程度各异的正则表达式
  • 自主设置密码,以便临时用户使用强密码
  • 让密码过期
  • 等等。

另一方面,存在缺点,因为所有这些都会使用户的生活变得不那么容易,这意味着更少的注册。

那么,我们使用什么技术?哪个提供最佳的保护与不便比率?

为了清楚起见,我指的不是银行网站或者存储信用卡的网站。从仍需要注册的受欢迎(或者不太受欢迎)网站的角度考虑更多问题。

解决方案

最好的方法实际上取决于站点和所使用的内容。但是理想的方法是在客户端提交之前尽其所能。使用RegEx是一个好方法。如果我们可以让他们不必再次提交表单,那是理想的选择。

不要执行任何操作……如果我们不保护财务信息或者其他同样重要的内容,请不要让用户选择强密码。

我在需要注册论坛等的整个网站上使用相同的弱密码。我不太在乎是否有人猜到了并且可以像我一样发布消息(而且认为有人没有太多动机去做)所以)。我无法做的是记住十二个站点的不同强密码,并且真的不希望使用其他软件来为我管理它们。

最好的折衷办法是向用户显示有关密码的强度的某种反馈(基于密码是否为字典单词,不同字符类型的数量,长度等)。

在让密码过期时,这种做法存在两个明显的问题:

  • 用户发现记住他们当前的密码更加困难,因此他们更有可能做一些愚蠢的事情,例如将其写在粘在显示器上的便签上。
  • 用户不会在每次尝试时生成新的,强壮的,不相关的密码。大多数情况下,他们使用某种方案来生成与旧方案相似的密码。因此,如果攻击者获得了旧密码,则推断出新密码仍然很容易。

编辑:这并不是说我反对整个想法,而只是需要与其他因素一起考虑。

我认为不可能强制使用强密码,但是我们可以做很多事情来尽可能地鼓励它们。

  • 对每个密码进行评分,并以分数或者图形栏等形式向用户提供反馈。
  • 设置最低密码分数以清除可怕的密码
  • 列出禁止或者禁止输入的常用字词

我喜欢使用的一个绝妙技巧是将密码的有效期限与密码得分挂钩。因此,更强大的密码不需要经常更改。如果我们可以直接向用户反馈所选密码的有效期限(并动态更新密码,以便他们可以看到添加字符如何影响日期),则此方法特别有用。

为什么要强制执行?

我发现"密码强度计"(指示我们键入密码强度的条形)通常是一种不错的非侵入性措施。它使那些关心安全性的人对密码弱点有内con的良知,但不会使那些不太关心安全性的人感到沮丧。

另外,对于当今的威胁模型,为什么定期更改密码策略不是一个好主意,这里有一篇很有见地的文章。

正如我们所说,根据我的经验,它实际上取决于站点的类型。

如果我们要创建银行或者金融网站,则用户通常会了解我们是否拥有更安全的密码,因为他们的个人数据可能会受到威胁。

但是,对于通常不包含很多个人信息的网站,可以使用更简单的密码。他们可能不太容易遭到黑客攻击,并且无论如何也不会获得任何有价值的东西。

我还发现,大多数人似乎也有一些经常使用的密码。一个是复杂的,另一个是简单的。因此,要求他们使用复杂的密码通常不会阻止人们进行注册。

我从未发现有效的密码可以正常工作。就像我之前说过的,许多人已经有一些经常使用的密码,因此,请他们仅出于网站要求而退出此操作,可能会使他们不想回来。

有一个Ajax工具PasswordStrength,可以使用户知道他们的密码是否正确。我喜欢它,因为它不必禁止创建密码。

http://www.asp.net/AJAX/AjaxControlToolkit/Samples/PasswordStrength/PasswordStrength.aspx

我从未见过这样做,但是似乎可以很好地工作:密码创建页面可以包含例如50个最常用密码的可扩展列表,迫使用户在输入密码之前向下滚动一点。结合Checkers的建议,这将有助于防止粗心的选择。

但是,解决了防止密码重用的问题……毫无头绪。