【2017-04-20】Sql字符串注入式攻击与防御

一、攻击

所谓sql字符串注入式攻击就是在用户输入界面输入一串sql语句,来改变C#中连接数据库要执行的sql语句

通过你写的程序,直接来执行我想要执行的sql语句

 

例如:在这么一个程序中,sname是需要用户输入的内容。

在用户输入界面输入  a');update Student set Sname ='赵四';--

本来是往Student表中添加学生信息,则变成了把所有的信息改成了赵四。

原理:用户输入的代码将c#中的sql语句中的sname替换掉了,就变成了下边的黑客想执行的sql语句。

insert into Student values('"+sno+"','a');update Student set Sname ='赵四';--')

 

 

 二、防御

将C#中操作数据库执行的sql语句中的字符串拼接换成占位符。

还是上边的例子:

在防御之后再用之前的放法进行攻击

 

 用占位符进行防御之后不会改变表的其他内容,会将这句代码原封不动的存到数据库中而不会改变c#中的sql语句。

 

注意:sql语句中带模糊查询的防御方法

将'%哈哈%'  全部用占位符占位。例子如下:

cmd.CommandText = "select*from Subject where SubjectName like @a";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@a","%"+subname+"%");

 

 

警告:该内容仅限学习交流,不要轻易尝试,闹不好没黑进去,会留下痕迹小心查水表!!!

 

转载于:https://www.cnblogs.com/qq609113043/p/6740737.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值