yii2模糊查询并且防SQL注入

 

yii2模糊查询并且防SQL注入

标签: yii2 SQL注入模糊查询
  756人阅读  评论(0)  收藏  举报
  分类:

博主前天在修改之前的网站代码时,因为之前写代码完全没有考虑过网站安全,所以对最基本的防SQL注入没有任何预防,所以需要对网站代码很多地方都要进行修改。而yii2框架对防SQL注入提供了接口,所以修改起来并不困难。但是当修改到使用了模糊查询的搜索功能时,出现了错误。

      这是原本使用的语句:

[php]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. $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注入。

[php]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. $db = new \yii\db\Query;         
[php]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. $books$db->from('book1')->where("book_title like :keywords")->addParams([':keywords'=>'%'.$_GET['keywords'].'%'])->orderBy('addtime DESC')->all();  


   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值