注册 登录
编程论坛 SQL Server论坛

动态SQL查询条件安全问题!

C心情 发布于 2010-06-19 15:06, 1539 次点击
在多表多条件查询时如果查询条件是动态生成就容易造成sql语句拼接后被注入攻击,
不拼接又实现不了动态组合查询功能,不知道各位是怎么处理这个问题的,请指点一下,谢谢!
4 回复
#2
cnfarer2010-06-19 16:28
拼接SQL这种方法,个人觉得不值得使用!!!一是容易出现你说的注入问题,二个这种语句效率低下,三个拼接的时候还容易出错!
推荐使用参数化查询。
#3
weilongzhou72010-06-20 19:08
楼上正解,同意这个方法
#4
C心情2010-06-21 15:25
多谢版主,可是要怎么用使用参数化来实现组合查询?

    DECLARE @Goods_ID int
    SELECT @Goods_ID=1001
    SELECT [Goods_ID]
          ,[Customer_ID]
          ,[sGoods_Name]
          ,[sGoods_Code]
          ,[sGoods_Barcode]
         ......还有很多的字段
      FROM [Goods] M
      LEFT JOIN Customer C ON Customer_ID=C.Customer_ID
      LEFT JOIN GoodsType T ON M.GoodsType_ID=T.GoodsType_ID
      WHERE Goods_ID=@Goods_ID -- ......
上面的WHERE 子句是无法确定的,只有在使用的时候用户根据自己的需要组合生成查询条件!

#5
cnfarer2010-06-21 16:56
回复 4楼 C心情
这就要靠你的智慧了!
1