ASP.NET(C#)后台安全登陆代码(防XSS攻击\万能密码漏洞)

本文介绍了一个基于ASP.NET的登录验证系统实现方法,通过MD5加密存储密码并使用正则表达式验证用户名和密码的格式,确保了系统的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

string ispostback = Context.Request["ispostbask"];
        string k8user = this.txtUser.Text.Trim();
        string k8pwd = this.txtPwd.Text.Trim();
        string k8md5pwd = FormsAuthentication.HashPasswordForStoringInConfigFile(k8pwd, "MD5").ToLower();
        //判断是否是表单提交过来的
        if (ispostback == "true")
        {   
            //判断输入是否为空
            if (k8user != "" || k8pwd != "")
            {
                //使用正则 严格检查 这里是关键 呵呵
               //没有特殊符号 所以万能密码里的= 号分号等失效
               //XSS也是一样 < % 各种语句要用到的符号都不符合
                //用户名长度4-8个 字母或数字
                Regex k8chkName = new Regex("^[[a-zA-Z0-9]{4,8}$");
                //密码7-12 字母大小写以及数字
                Regex k8chkpwd1 = new Regex(@"\d+");
                Regex k8chkpwd2 = new Regex(@"[a-zA-Z]+");
                Regex k8chkpwd3 = new Regex(@"^[a-zA-Z0-9]{7,12}$");
                //检测用户名
                if (k8chkName.IsMatch(k8user))
                {   
                    //检测密码
                    if (k8chkpwd1.IsMatch(k8pwd) && k8chkpwd2.IsMatch(k8pwd) && k8chkpwd3.IsMatch(k8pwd))
                    {
                        //ClientScript.RegisterStartupScript(GetType(), "", "alert('符合输入');", true);
                        //这里再连接你的数据库 插入或者干嘛 随你大小便
                        try
                        {
                            OleDbConnection K8conn = new OleDbConnection();
                            K8conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath("K8Data/k8access.mdb");
                            K8conn.Open(); //打开数据库
                            //定义字符串
                            string k8sql = "select count(*) from K8admin where User='" + txtUser.Text.Trim() + "' and Pass='" + k8md5pwd + "'";//建立sql查询语句
                            OleDbCommand cmd = new OleDbCommand(k8sql, K8conn);//建立数据集
                            int state = Convert.ToInt32(cmd.ExecuteScalar());//执行sql语句,并返回获得值
                            if (state == 0 || state > 1)//如果数据中没有记录或有多条记录则抱错
                            {
                                ClientScript.RegisterStartupScript(GetType(), "", "alert('用户不存在或密码错误');", true);
                            }
                            else//正确数据指向登陆后页面
                            {
                                //Session["k8user"] = k8user;
                                //Session["k8pass"] = k8md5pwd;
                                Response.Cookies.Add(new HttpCookie(k8user, k8md5pwd));
                                Response.Redirect("admin.aspx");//指向登陆后页面
                            }
                            K8conn.Close();//关闭数据库
                        }
                        catch
                        {
                            ClientScript.RegisterStartupScript(GetType(), "", "alert('连接数据库失败');", true);
                        }
                        return;
                    }
                }
            }
            //为空或帐号密码错误
            ClientScript.RegisterStartupScript(GetType(), "", "alert('用户不存在或密码错误');", true);
        }

原文:http://qqhack8.blog.163.com/blog/static/114147985201162172136155/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值