• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#参数化执行SQL语句,防止漏洞攻击本文以MySql为例【20151108非查询操作】 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

为什么要参数化执行SQL语句呢?

一个作用就是可以防止用户注入漏洞。

简单举个列子吧。

比如账号密码登入,如果不用参数,

写的简单点吧,就写从数据库查找到id和pw与用户输入一样的数据吧

sql:select id,pw where id='inputID' and pw='inputPW';

一般情况没什么问题,但如果用户输入的id或PW带 ‘ ,这是可能就会出现漏洞,bug了

比如用户输入的id是: 1‘ or ’1‘=‘1

这是sql语句执行的是:select id,pw where id='1‘ or ’1‘=‘1 ‘ and pw='inputPW';

那数据库里的所有账号密码都符合这个条件了。

简而言之,用户可以通过 ' 来改变你SQL的执行。

参数化就可以避免这个问题了。

 

 

 

/************************非查询操作*****************************************/

//今天太晚了,先写个非查询操作的,明天在写查询操作的。

/****函数*****/
        /// <summary>
        /// 增删改数据,返回影响行数,没有则返回-1
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="ps">参数</param>
        /// <returns>返回影响行数</returns>

       static string connStr ="server=IP;User Id=账号名;password=密码;Database=表名"public static int ExecuteNonQuery(string sql, params MySqlParameter[] ps)
        {

            using (MySqlConnection conn = new MySqlConnection(connStr))
            {
                using (MySqlCommand cmd = new MySqlCommand(sql, conn))
                {
                    cmd.Parameters.AddRange(ps);
                    conn.Open();
                    return cmd.ExecuteNonQuery();//返回受影响行数
                }
            }
        }

 

/****应用举例****/

   public void InsertData()
        {
               int cid=1,aid=2;

               string name="hha";
                string sql = "insert into tb_compart (compartID,compartName,areaID)values(@compartID,@compartName,@areaID);";
                MySqlParameter[] ps ={   new MySqlParameter("@compartID",(object)cid),
                new MySqlParameter("@compartName",name),
                new MySqlParameter ("@areaID",(object)aid)};
                int r = Mysql.MySQLHelper.ExecuteNonQuery(sql, ps);//r得值就是受影响的行数,执行失败r=-1;
            }

        }

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#使用原生的Directx和OpenGL绘图发布时间:2022-07-13
下一篇:
C#中的CSP(Communicatingsequentialprocesses)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap