有许多技术可以在网站上强制使用强密码:
- 要求密码通过不同复杂度的正则表达式
- 自主设置密码,让普通用户拥有强密码
- 让密码过期
- 等等
另一方面也有缺点,因为所有这些都使用户的生活变得不那么容易,这意味着更少的注册。
那么,您使用什么技术?哪个提供最好的保护与不便比率?
澄清一下,我不是指银行网站或存储信用卡的网站。更多地考虑仍然需要注册的流行(或不那么流行)网站。
我认为强制使用强密码是不可能的,但是您可以做很多事情来尽可能地鼓励它们。
我喜欢使用的一个绝妙技巧是将密码的到期日期与密码分数相关联。因此,不需要经常更改更强的密码。如果您可以直接向用户提供有关他们选择的密码将使用多长时间的反馈(并动态更新它,以便他们可以看到添加字符如何影响日期),则此方法特别有效。
不要强制执行任何事情……如果您没有保护财务信息或同样重要的事情,那么不要让用户选择强密码。
我在需要注册论坛等的所有网站上都有相同的弱密码。我真的不在乎有人猜到它并且可以像我一样发布消息(并且不认为有人这样做的动机很大所以)。我不能做的是记住十几个网站的不同强密码,并且真的不想使用另一个软件来为我管理它们。
最好的折衷办法是向用户显示某种关于密码强度的反馈(基于它是否是字典单词、不同字符类型的数量、长度等)。
为什么要强制执行?
我发现“密码强度计”(在您键入时指示密码强度的条)通常是一种很好的非侵入性措施。它使那些关心安全的人对密码弱点感到内疚,但不会让那些不那么关心的人感到沮丧。
此外,还有一篇很有见地的文章,说明了为什么定期密码更改策略对于当今的威胁模型来说是个坏主意。
正如您所说,根据我的经验,这实际上取决于网站的类型。
如果您正在创建银行或金融网站,那么用户通常会了解您是否拥有更安全的密码,因为他们的个人数据可能存在风险。
但是,对于通常不包含大量个人信息的网站,更简单的密码就可以了。他们可能不太容易受到黑客攻击,而且无论如何也不会得到任何有价值的东西。
我还发现大多数人似乎也有几个他们经常使用的密码。一个是复杂的,另一个是简单的。因此,要求他们使用复杂的密码通常不会阻止人们注册。
我从来没有发现过期密码可以成功工作。正如我之前所说,许多人已经拥有一组他们经常使用的密码,因此要求他们为您的网站而离开此密码可能会让他们不想回来。
最好的方法实际上取决于您的网站和您使用的内容。但理想的方法是在客户端提交之前尽可能多地在客户端进行操作。使用 RegEx 是一个好方法。如果您可以让他们不必再次提交表单,那是理想的。
在让密码过期时,这种做法有两个值得注意的问题:
编辑:这并不是说我反对整个想法,而是说这需要与其他因素一起考虑。
有一个 Ajax 工具 PasswordStrength,它可以让用户知道他们的密码是否有用。我喜欢它,因为它不必禁止创建密码。
http://www.asp.net/AJAX/AjaxControlToolkit/Samples/PasswordStrength/PasswordStrength.aspx
我从未见过这样做,但它似乎会很好地工作:密码创建页面可以有一个可扩展的列表,例如 50 个最常见的密码,迫使用户在输入密码之前向下滚动一点. 这与 Checkers 的建议相结合,将有助于防止粗心的选择。
但是,解决防止密码重用的问题......没有线索。