登录SQL注入

在登录页面的账号密码的输入框中分别输入,这个值:1' or '1'='1

 

 一,验证的数据库语句,讲传人的值组合成数据库语句:

        public DataTable CheckLogin(string name, string pwd)
        {
            string strSqlCom = "select *from UserInfo where Name = '" + name + "' and Pwd = '" + pwd + "'";
            return _db.ExceTable(strSqlCom);
        }

运行调试结果为:

 二,在SqlHelper中的代码为:

        public DataTable ExceTable(string strCom) //该方法返回一个DataTable类型
        {
            try
            {
                SqlDataAdapter sda = new SqlDataAdapter(strCom, _sqlCon);
                DataTable ds = new DataTable();
                sda.Fill(ds);
                return ds;
            }
            finally
            {
                _sqlCon.Close();
            }
        }

运行调试结果为:

 

三,返回验证登录代码为:

 public bool CheckLogin(string name, string pwd)
        {
            DataTable ds = new DataTable();
            ds = _login.CheckLogin(name, pwd);
            if (ds.Rows.Count > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

运行调试结果为:

 

这是后可以显示,当输入以上条件,他将我数据库的用户表的所有用户都选出来了,则返回true,登录成功

 四,防止SQL注入方法:

1》初始化参数名和参数类型:参数化方法,参数类型的指定,能提高类型安全,有效防止SQL注入

        StringBuilder strSql = new StringBuilder();
            strSql.Append("insert into UserInfo(");
            strSql.Append("UsersName)");
            strSql.Append(" values (");
            strSql.Append("@UsersName)");
            SqlParameter[] parameters = {new SqlParameter("@UsersName", SqlDbType.VarChar,50)};
       parameters[0].Value = model.UsersName;

 

posted @ 2016-09-02 19:04  叶丶梓轩  阅读(771)  评论(0编辑  收藏  举报