C#验证密码不能含有键盘连续字母
C#的密码验证里,防止用户设置像abc
、123
、qwe
这种键盘顺序的密码,是个挺实用的安全策略。用正则表达式搞定这事,效率还挺高。
正则表达式在这里主要是用来匹配那些常见的顺序,比如字母顺序、数字顺序、键盘上的顺序。虽然一条正则搞不定所有情况,但起码能把最容易被猜到的过滤掉。
代码也清爽,用个Regex
类就能搞定检测逻辑:
using System;
using System.Text.RegularExpressions;
public class PasswordValidator {
public bool ValidatePassword(string password) {
string regexPattern = @"^(?:(?!(.)\1{2}))[a-zA-Z0-9]*$";
Regex regex = new Regex(regexPattern);
return regex.IsMatch(password);
}
}
这个正则的思路是:只要不出现连续的字符重复,就过关。像aaa
、111
,就直接被挡在门外。虽然简单,但防住一部分低质量密码还是没问题的。
啦,真正上线的密码策略肯定不止这点要求。像长度、特殊字符、常用词过滤这些,建议你一起搭配上,不然光靠这一条拦不住人。
你要是对正则还不太熟,可以看看这几个工具和参考资料,写正则效率能快不少:
如果你在写登录注册页,或者搞后端接口验证逻辑,这段代码可以直接上,改一下正则就行。响应也快,逻辑也简单。
下载地址
用户评论