用户界面设计模式1.1表单 :密码强度指示器
原文链接:http://ui-patterns.com/patterns/PasswordStrengthMeter
问题总结
你希望确保用户的密码强度足够强大,以防止用户账号被恶意攻击。
示例
用法
当你希望用户为其账号的密码选择一个难以被人工破解或者计算机辅助破解的密码时。
当你想要增加用户密码的复杂性,并且增加攻击者篡改系统难度时。
当你希望用户知道什么是一个好的密码,并且遵循这些原则指导他们选择一个好的密码时。
解决方案
根据预定义的规则来检测密码的强度,同时在”密码输入框”(Import stile)的旁边显示一个水平刻度。如果密码较弱,则只突出显示水平条的一小部分。密码越强,水平条突出显示的就越多。
密码强度也可以适当地通过将条形图着色为与好坏关联的颜色来表示:绿色表示强密码,红色表示弱密码、
密码有多强?
强密码的定义是有争论的。乍一看,强制用户使用复杂的密码会为其增加安全性,但是在密码上强制执行过于复杂和严格的规则可能会产生相反的效果。由于密码被迫变的复杂化,用户也越来越难以记住密码,这偶尔会导致增加的安全性的自毁几率,因为有些用户只会将密码写在一张小便条上,并将其粘贴在屏幕上以便记住他们新的复杂密码。这是一个问题,尤其是在一些地方,规则用户密码必须每三个月更新一次。
什么是强密码?
考虑到上述情况,我要强调的是,一个足够强的密码并不一定要满足下面的所有规则,而是只需要满足几条就可以了。考虑以下规则,为每个规则添加一个指向密码强度级别的点(即0是最弱的,5是最强的)。例如:http://UI-patterns.com在重置密码时定义了一个强度密码规则:
有超过8个字符
包含大写和小写字母
包含至少一个数学字符
包含特殊字符
包含超过12个字符
这些规则将导致6个级别的密码强度的变化,具体取决于满足上述标准的数量。
字典攻击
虽然上面提到的密码检查可以很容易地仅使用客户端javascript来完成,但它不能防止字典攻击。为了便于记忆密码,人们倾向于使用真实的单词作为密码,而只是用数字或特殊字符替换字符。这种密码的一个例子可能是“P @ ssw0rd”,它实际上不是一个强密码。现代密码破解软件相当擅长猜测这样的数字/字母替换。要检查这种强度,您需要执行ajax调用,该调用将使用您自己的字典检查密码是否够强。
选择适当级别的密码强度
您需要根据要保护的内容确定密码强度和复杂性。你需要在某处画线。对于99%的内容,可以很容易地认为仅仅上面提到的前2或3规则就足够了。
选择密码的一般准则
使用看似随机选择的字母和数字的密码
使用您可以键入的密码,而无需查看键盘(减少人们窃取密码的可能性)
定期更改密码
不要以任何形式使用您的网络ID(大写,反向,加倍等)
不要以任何形式使用您的名字或姓氏或其他任何人。
不要使用您的名字缩写或您或其他人可能拥有的任何昵称。
不要使用任何字典(英语或国外),拼写列表,缩写列表等中包含的单词。
不要使用人们可以轻易获得的有关您的信息(车牌,宠物名称,出生日期,电话号码)
不要使用所有字母字符的密码或仅使用数字字符 - 将它们混合起来。
不要使用键盘序列(例如qwerty或asdf)
基本原理
通过在密码字段旁边显示密码强度计,用户被迫考虑使用具有适当强度的密码。通过设置最低级别的密码强度,您甚至可以使用密码强度计来强化您网站的安全性。
使用网站上的密码强度指示器,可以为网站添加另一个级别的安全性。这不仅使网站的当前用户感觉更安全,而且潜在客户在决定与公司开展业务时可能会将此作为必要条件。