PasswordSecurityMeter 自定义控件






4.08/5 (8投票s)
2005年7月4日
3分钟阅读

43130

805
在本文中,我创建了一个 ASP.NET 自定义控件,它显示用户的密码强度。
引言
最近我在英国的 eBay 网站上注册时,发现了一个有趣的控件,它显示用户的密码强度。这个想法引起了我的兴趣,我决定创建一个简单的 ASP.NET 自定义控件来提供该功能。
背景
用户的密码是基本的安全问题之一。一方面,我们希望系统是安全的,这需要强密码,但另一方面,有些用户没有相关的知识,也不想记住复杂的密码。安全密码的简单解决方案是使用字母(大小写混合)、数字和特殊字符(如 #[]!$%^&*)。密码也必须具有适当的长度(至少 6 个字符,但更多更好)。知道了这些,我们可以简单地将弱密码 mariusz 更改为强密码 MariusZ#30。但是我们——开发人员——必须记住,我们的职责是向用户展示并帮助他们创建强密码。
控件
好的,让我们看看发生了什么……
首先——引擎。基本上,我们需要检查密码的长度(必须大于最小值,比如 6 个字符,但如果它至少具有推荐的长度 - 9 个字符,那就更好了)。接下来 - 我们验证密码不包含非法短语(例如公司名称或来自登录电子邮件的短语),或者连续或相同的字符。最后一个阶段是检查密码是否包含字母、数字和特殊字符。这在 CalculateSecurityLevel
(参见第 329 行;PasswordSecurityMeter.cs 文件)过程以及呈现的 JavaScript 代码(参见第 162 行;PasswordSecurityMeter.cs 文件)中实现。
关于控件设计器的一些说明
正如您所看到的,我创建了控件的设计器(PasswordSecurityMeterDesigner
类)。设计器用于在设计时提供控件的呈现。在这种情况下,设计器提供简单的属性检查,并且当值设置不正确时,会呈现一条相应的消息。
设计器类应该派生自 ControlDesigner
类,并且应该实现 GetDesignTimeHtml
过程(参见第 17 行;PasswordSecurityMeterDesigner.cs 文件)。正如您所看到的,我正在检查属性 PasswordControlName
是否已设置,并且当渲染模式 Image
被选中时,属性 ImagesNamePattern
是否已设置。
要将设计器与控件一起使用,您必须为控件的类设置 Designer 属性(参见第 13 行;PasswordSecurityMeter.cs 文件)。
使用代码
我假设您知道如何在 Visual Studio .NET 中编译和安装自定义控件(如果不是,请阅读 MSDN 上的这篇 文章)。要使用该控件,只需将其拖到 Web 窗体中并设置属性 PasswordControlName
- 这是保存用户密码的控件的名称。此外,您可以设置这些属性
MinPasswordLength
– 密码最小长度MaxPasswordLength
– 密码最大长度GoodPasswordLength
– 这决定了良好密码应该有多少个字符。如果密码至少有这么多字符,则添加一个等级点。EMailControlName
– 用户可以指定电子邮件的控件的名称。这可以防止用户在密码中使用来自电子邮件地址的短语,而这些短语可能被用作登录名。RenderMode
- 选择渲染模式(作为Image
或Table
)。ImagesNamePattern
– 当RenderMode
为Image
时,您必须指定此属性。只需键入图像的名称模式,将 {0} 放在安全级别编号的位置,例如:images/blue_securityLevel{0}.gif。在此示例中,您在 images 目录中有六个图像(blue_securityLevel0.gif、blue_securityLevel1.gif、…、blue_securityLevel5.gif)。
历史
- 2005 年 6 月 30 日 - 过了一会儿(很长一段时间),我终于写了一篇文章。不知道为什么,但总是需要一段时间 :(
- 2005 年 5 月 4 日 - 我编写了控件的代码,并决定写一篇文章。
待办事项
- 实现一个属性,该属性将允许用户输入禁止词列表(如公司名称)。
- 实现一个属性,该属性将允许用户设置呈现表的颜色。
- 实现动态图像渲染。
- 实现“提示 & 技巧”,这将帮助客户创建更强的密码。