入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

yii2模糊查询并且防SQL注入

创建时间:2016-07-25 投稿人: 浏览次数:4207

博主前天在修改之前的网站代码时,因为之前写代码完全没有考虑过网站安全,所以对最基本的防SQL注入没有任何预防,所以需要对网站代码很多地方都要进行修改。而yii2框架对防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 yiidbQuery;       
$books= $db->from("book1")->where("book_title like :keywords")->addParams([":keywords"=>"%".$_GET["keywords"]."%"])->orderBy("addtime DESC")->all();


   

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。