ASP.NET(C#)后台安全登陆代码(防XSS攻击\万能密码漏洞)
2014-02-22 23:24
806 查看
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/
相关文章推荐
- asp.net 后台代码跳转页面前弹出提示框【C#后台提示后调转页面大全
- asp.net WebForm 前台获取后台c#代码信息
- asp.net WebForm 前台获取后台c#代码信息
- asp.net对cookie的操作(前台js和后台c#代码)
- ASP.NET C# 用后台代码实现 跨域名访问 返回HTML代码
- ASP.NET前台javascript与c#后台代码调用
- asp.net ajax使用C#后台代码(无参数)
- [asp.net]带错误登陆次数限制的C#代码
- C# 修改Lotus密码已经Asp.net后台注册JS简述
- 开发环境下登陆界面后台代码问题#ASP.NET类型
- javascript与cs代码互相调用 asp.net中前台javascript与后台C#交互(转)
- asp.net js与后台C#代码相互调用
- GOOGLE API - 翻译, 后台c# 调用前台js代码, asp.net后台调用js代码
- 利用万能密码登陆网站后台原理及漏洞修复方法
- javascript与cs代码互相调用 asp.net中前台javascript与后台C#交互 这里主要包括了javascipt与后台CS代码四种方法互调(其中包括函数与变量的访问)
- javascript如何调用C#后台代码中的过程和ASP.NET调用
- asp.net 前台获取后台c#代码信息
- 万能截取php后台登陆密码的代码
- asp.net中前台javascript与后台C#交互
- asp.net(C#)防sql注入组件的实现代码