当前位置:   article > 正文

sqlserver:sql注入防范&参数化sql_sqlserver防止sql注入

sqlserver防止sql注入

环境:

  • sqlserver2008及以上
  • .net core 3.1

sql注入本质:

接收用户输入的字符串并且将字符串拼接成sql语句执行。由于用户的故意输入,打断了原来的sql结构。

--正常语句
select * from sysuser where username='admin' and pwd='123456'
--被注入的语句(用户输入的用户名是【admin' --】,密码还是123456)
select * from syssuer where username='admin' --' and pwd='123456'
  • 1
  • 2
  • 3
  • 4

如何防范sql注入?

  • 最简单的方法:
    将用户输入的字符串中的替换为’'
    就是这么简单。还有,如果sql语法中存在\转义符,还需要替换\\
    开源orm工具FreeSql是这么处理的。

  • 使用参数化语句
    这种方法是常规的,也是理想的解决办法,但是在in子句中不好实现(因为一个参数无法表达数组)。
    下面是常见的参数化sql拼接:

    • like过滤条件
      var sql="select * from test where name like @name"
      var para=new SqlParameter("name", "%花%");
      
      • 1
      • 2
    • between…and
      var sql="select * from test where birth between @start and @end"
      var para1=new SqlParameter("start", DateTime.Now);
      var para2=new SqlParameter("end", DateTime.Now);
      
      • 1
      • 2
      • 3
    • in参数化
      var sql="select * from test where id in (@id1,@id2)";
      var para1=new SqlParameter("id1", 1);
      var para2=new SqlParameter("id2", 2);
      
      • 1
      • 2
      • 3
    • 其他的参数化都比较简单,不再列举。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/556562
推荐阅读
相关标签
  

闽ICP备14008679号