SQL语句的防溢出攻击写法(个人觉得写法比较简单又清晰)DEMO

SQL语句的防溢出攻击写法 我认为是用存储过程以外,最好的sql语句在程序里的实现了 个人认为学会这个以后,可以完全放弃以前的 sql语句里嵌入空间的Text属性的写法 如: "select +'testbox1.Text' +from +'textbox2.Text'"  这种写法可读性非常差,在编写过程中常常会写错语法,而且会有被SQL溢出攻击的可能。

 

SQL的防溢出写法 如:

  1.     protected void btn1_Click(object sender, EventArgs e)
  2.     {
  3.         string connstring = @"server=10.72.26.227;Database=BM_DATABASE;User ID=almj; Password=almj";
  4.         using (SqlConnection conn = new SqlConnection(connstring))
  5.         {
  6.              conn.Open();
  7.             using (SqlCommand sqlcom = new SqlCommand("insert into SHEQU_TABLE (USERNAME,TEL,PRO,JOB,CONT) values (@USERNAME,@TEL,@PRO,@JOB,@CONT)", conn))
  8.             {
  9.              
  10.                 sqlcom.Parameters.AddWithValue("@USERNAME", name.Text);
  11.                 sqlcom.Parameters.AddWithValue("@TEL", tel.Text);
  12.                 sqlcom.Parameters.AddWithValue("@PRO", pro.SelectedItem.Text);
  13.                 sqlcom.Parameters.AddWithValue("@JOB", job.Text);
  14.                 sqlcom.Parameters.AddWithValue("@CONT", cont.Text);
  15.                 sqlcom.ExecuteNonQuery();
  16.             }
  17.         }
  18.     }

使用using () {}可以不用手动关闭数据库流(conn.Close();)using语句在代码块结束时会自动调用对象的Dispose()方法释放资源由于Command对象同样实现了Dispose()方法我们也可以同样适用using来自动释放资源,这也是微软官方推荐的最佳实践方法。

 

在程序中的(@USERNAME,@TEL,@PRO,@JOB,@CONT部分是SQL变量(我是这么叫的),我们要从控件的Text属性读取值并赋值给它,可以用下面的方法实现赋值 如:

  1.                 sqlcom.Parameters.AddWithValue("@USERNAME", name.Text);
  2.                 sqlcom.Parameters.AddWithValue("@TEL", tel.Text);
  3.                 sqlcom.Parameters.AddWithValue("@PRO", pro.SelectedItem.Text);
  4.                 sqlcom.Parameters.AddWithValue("@JOB", job.Text);
  5.                 sqlcom.Parameters.AddWithValue("@CONT", cont.Text);
  6.                 sqlcom.ExecuteNonQuery();

用SqlCommand的Parameters.AddWithValue()方法可以对SQL变量赋值(我是这么叫的)。这样就实现了SQL语句在程序中防溢出写法了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值