yii2模糊查询并且防SQL注入
2016-07-25 12:45
429 查看
博主前天在修改之前的网站代码时,因为之前写代码完全没有考虑过网站安全,所以对最基本的防SQL注入没有任何预防,所以需要对网站代码很多地方都要进行修改。而yii2框架对防SQL注入提供了接口,所以修改起来并不困难。但是当修改到使用了模糊查询的搜索功能时,出现了错误。
这是原本使用的语句:
实际执行的语句为
可以看到经过该函数防sql注入处理之后的 $_GET['keywords'] ,自动为上传的关键字加上了单引号,导致执行的SQL语句无法正常查询出来结果,无法把数据库存在的《算法》 查询出来。
经过查询资料,更换了以下的接口函数,可以既实现模糊查询,又可以实现防SQL注入。
这是原本使用的语句:
$books = \Yii::$app->db->createCommand("SELECT * FROM book1 where book_title like '%:keywords%' order by addtime desc")->bindValue(":keywords",$_GET['keywords'])->queryAll();
实际执行的语句为
可以看到经过该函数防sql注入处理之后的 $_GET['keywords'] ,自动为上传的关键字加上了单引号,导致执行的SQL语句无法正常查询出来结果,无法把数据库存在的《算法》 查询出来。
经过查询资料,更换了以下的接口函数,可以既实现模糊查询,又可以实现防SQL注入。
$db = new \yii\db\Query;
$books= $db->from('book1')->where("book_title like :keywords")->addParams([':keywords'=>'%'.$_GET['keywords'].'%'])->orderBy('addtime DESC')->all();
相关文章推荐
- sqlserver 模糊查询常用方法
- ASP在ACCESS中模糊查询"内存溢出"的解决方法
- mysql模糊查询like和regexp小结
- Access模糊查询查不到数据的解决方法
- Select下拉框模糊查询功能实现代码
- asp.net 多字段模糊查询代码
- mysql中模糊查询的四种用法介绍
- MySQL单表多关键字模糊查询的实现方法
- java留言管理系统中模糊查询实例分享
- SQL 时间类型的模糊查询
- MySql like模糊查询通配符使用详细介绍
- 有关SQL模糊查询
- PHP MYSQL实现登陆和模糊查询两大功能
- SqlServer使用 case when 解决多条件模糊查询问题
- C语言之字符串模糊查询方法的实现
- ASP.NET实现按拼音码模糊查询的方法
- SQL查询语句通配符与ACCESS模糊查询like的解决方法
- Java操作MongoDB模糊查询和分页查询
- Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办
- MySql官方手册学习笔记2 MySql的模糊查询和正则表达式