谁一开始就是大神?

小白求教,关于sql注入的问题[2.0]

刚刚看完了慕课的关于yii2的安全教程。
最后一张有说 设置emulateprepare = false
然后使用占位符的方式进行方式sql注入。

我的问题是

  1. 请问这样就肯定能够避免sql注入了吗?
  2. 如果我依然设置 emulateprepare = true, 那么 我在使用ar或者query build 的时候 所有的数组方式赋值 是不是根本就不能做到防范sql注入的效果? 如 $model->find()->where(['id'=>$id])... 如果使用数组赋值方式不能起到防范sql注入,那么像我这样的小白,yii是否有什么可以依托的相对安全的方式,让我们去操作数据库呢?

当然个人没有测试,对于第二个问题其实可以自己模拟一下的。但是因为水平有限对于各种sql或者url的转码肯定不能做到全面,所以想上来问问各位朋友,请大家分享下经验。谢谢大家~~~

$model->find()->where(['id'=>$id]) 这样当然不能做到防止sql inject..
第一: 一定要使用占位符, $model->find()->where( 'id' = :id, [':id' => $id] )
第二: 如果追求更安全, 不要让php帮你自动绑定参数, 而是发送到mysql, 让mysql自己完成参数解析绑定.
也就是你说的 emulateprepare = false 其实就是 PDOPDO::ATTR_EMULATE_PREPARES 这个参数.
经过这两步, 就可以完全避免 sql inject

赞(0) 打赏
未经允许不得转载:菜鸟之家 » 小白求教,关于sql注入的问题[2.0]

评论 抢沙发

登录

找回密码

注册