C# web程序js 与 后台密码强弱验证

1、js端验证

function checkPass(s) {
    if (s.length < 8) {
        return 0;
    }
    var ls = 0;
    if (s.match(/([a-z])+/)) {
        ls++;
    }
    if (s.match(/([0-9])+/)) {
        ls++;
    }
    if (s.match(/([A-Z])+/)) {
        ls++;
    }
    if (s.match(/[^a-zA-Z0-9]+/)) {
        ls++;
    }
    return ls
}

2、后台验证

public class CheckPass
    {
        /// <summary>
        /// 密码强度
        /// </summary>
        public enum Strength
        {
            Invalid = 0, //无效密码
            Weak = 1, //低强度密码
            Normal = 2, //中强度密码
            Strong = 3 //高强度密码
        };
        /// <summary>
        /// 计算密码强度
        /// </summary>
        /// <param name="password">密码字符串</param>
        /// <returns></returns>
        public static Strength PasswordStrength(string password)
        {
            //空字符串强度值为0
            if (password == "") return Strength.Invalid;
            //字符统计
            int iNum = 0, iLtt = 0, iSym = 0;
            foreach (char c in password)
            {
                if (c >= '0' && c <= '9') iNum++;
                else if (c >= 'a' && c <= 'z') iLtt++;
                else if (c >= 'A' && c <= 'Z') iLtt++;
                else iSym++;
            }
            if (iLtt == 0 && iSym == 0) return Strength.Weak; //纯数字密码
            if (iNum == 0 && iLtt == 0) return Strength.Weak; //纯符号密码
            if (iNum == 0 && iSym == 0) return Strength.Weak; //纯字母密码
            if (password.Length < 8) return Strength.Weak; //长度小于8的密码
            if (iLtt == 0) return Strength.Normal; //数字和符号构成的密码
            if (iSym == 0) return Strength.Normal; //数字和字母构成的密码
            if (iNum == 0) return Strength.Normal; //字母和符号构成的密码
            return Strength.Strong; //由数字、字母、符号构成的密码
        }

    }

3、使用方法

if (checkPass(mcp_txtPasswordField.getValue()) < 3) {
    toastalert('密码必须是字母大写、字母小写、数字、特殊字符中任意三个组合,且长度大于8位!');
    return false;
}
if (CheckPass.PasswordStrength(this.txtPassword.Value)!=Strength.Strong)
{
    this.Response.Redirect("/manager/ChangePwd.aspx");
    return;
}

4、第一次跳转时修改密码界面一般是单独界面,判断是否在iframe中方法

1.方式一

if (self.frameElement && self.frameElement.tagName == "IFRAME") {
  alert('在iframe中');
}

2.方式二
if (window.frames.length != parent.frames.length) {
  alert('在iframe中');
}

3.方式三
if (self != top) { 
  alert('在iframe中');
}

以上代码片段来自网友:

https://www.cnblogs.com/zycbloger/p/6196493.html

https://download.csdn.net/download/ice9696/5380033

https://www.iteye.com/blog/zhanggz-188299

posted @ 2020-06-10 12:58  zhaogaojian  阅读(639)  评论(1编辑  收藏  举报