首页 > 代码库 > ADO.NET字符串注入式攻击与防御
ADO.NET字符串注入式攻击与防御
一、字符串注入攻击
所谓sql字符串注入式攻击就是在用户输入界面输入一串sql语句,来改变C#中连接数据库要执行的sql语句
通过你写的程序,直接来执行我想要执行的sql语句
例如:在这么一个程序中,sname是需要用户输入的内容。
在用户输入界面输入
a‘);update 表名 set 列名 =‘字段名称;--
假如你在输入时输入了这句代码:a‘);update student set sname =‘朱利军;--
原理:用户输入的代码将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+"%");
ADO.NET字符串注入式攻击与防御
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。