您的位置:首页 > 编程语言 > ASP

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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: