MS SQL 防注入,好大个坑

        程序运行中,用户反映个别查询特别慢,有时候直接查不到数据,提示连接数据库失败。一开始以为服务器挂了,重启服务器。第二天,仍有用户反映相同问题,于是考虑代码错误。但是未找到代码问题,最终问题集中到执行的SQL语句上。难道传入参数会有问题吗?

        于是,将sql代码放到服务器查询分析器里进行相同参数查询。靠,飞 jer 快,没问题呀!再设置相同参数C#程序执行。哦~~,可以先喝口茶,再上个厕所。难道不是在同一个服务器上执行吗!!接着就是倒处找资料,后来偶然看到网上有大神说传参会影响C#执行数据库SQL的速度,于是赶快测试。果不其然!

        为使得代码通用性更强,我在一条SQL字符串中使用拼接的方式生成执行。这会导致我传入的6个参数中,有时候只会有3个参数会用到。也就是在这时,查询速度会明显下降。于是在服务器端新开一个服务单独执行只有3个参数的情况。结果让人兴奋,恢复正常执行时间了!

        刚要提交代码,忽然又想,那如果我不传参数,直接代码拼接呢,至少这条SQL代码是不可能被注入的。于是再改,结果让人满意,执行速度比用参数快的太多了。

        有时候就是搞不懂这些莫名其妙的坑,我学习的时候,可是被老师逼着习惯了传参的呀!是老师错了吗?还是我对代码理解的不够呀!看到的兄弟们,请自行起跳!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值