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

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/
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、什么是XSS攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。 二、XSS漏洞的危害 (1)网络钓鱼,包括盗取各类用户账号; (2)窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作; (3)劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等; (4)强制弹出广告页面、刷流量等; (5)网页挂马; (6)进行恶意操作,例如任意篡改页面信息、删除文章等; (7)进行大量的客户端攻击,如DDoS攻击; (8)获取客户端信息,例如用户的浏览历史、真实IP、开放端口等; (9)控制受害者机器向其他网站发起攻击; (10)结合其他漏洞,如CSRF漏洞,实施进一步作恶; (11)提升用户权限,包括进一步渗透网站; (12)传播跨站脚本蠕虫等; 三、过滤器配置 web.xml配置 XssFilter com.xxx.Filter.XssFilter XssFilter /*

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值