ADO。Net(二)——防止SQL注入攻击
2018-06-18 04:28:56来源:未知 阅读 ()
规避SQL注入
如果不规避,在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击
如:输入Code值
p001' union select * from Info where '1'='1 //这样可以查询到所有数据,不要轻易相信用户输入的内容
防止SQL注入攻击
通用方法:可以用正则匹配掉特殊符号
推荐方法:再给命令发送SQL语句的时候分两次发送
把SQL语句拆成两块
用户输入的是一块;本身写好的是一块
第一次把CommandText里写的sql语句发过去;第二次把变量值发过去,进行匹配
例:
使列名等于一个变量名
改变量绑定参数 cmd.Parameters.AddWithValue("变量名称",变量值);
cmd.Parameters是对象里面的一个属性,返回值是一个集合
有时会用到同样的变量名 所以在绑定参数之前先清除一下cmd.Parameters.Clear();
static void Main(string[] args) { //接收用户输入的查询条件 Console.WriteLine("请输入要查询的汽车代号:"); string code = Console.ReadLine(); //造连接对象 SqlConnection conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123"); //造命令对象 SqlCommand cmd = conn.CreateCommand(); //给命令对象一条SQL语句 //使code=一个变量 cmd.CommandText = "select * from Car where Code=@code"; //cmd.CommandText = "select * from Car where Code=@code or Name=@name"; //改变量绑定参数 cmd.Parameters.Clear();//清除绑定的变量,最好每次用参数集合前写一个清除 cmd.Parameters.AddWithValue("@code",code); //cmd.Parameters.AddWithValue("@name",name);//有多少列绑多少个 //打开连接 conn.Open(); //执行SQL语句 SqlDataReader dr = cmd.ExecuteReader(); //读取数据 if (dr.HasRows) { while (dr.Read()) { Console.WriteLine(dr[0] + "--" + dr[1]); } } else { Console.WriteLine("没有查到相应的数据"); } //关闭连接 conn.Close(); Console.ReadLine(); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 这可能是目前最透彻的Netty讲解了... 2020-06-08
- Docker Swarm与Kubernetes对比分析如何选择? 2020-06-02
- 架构调优之如何压缩整合hadoop,本文详解 2020-05-23
- Netty源码死磕一(netty线程模型及EventLoop机制) 2020-05-19
- 当Tomcat遇上Netty 2020-05-19
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash