关于防sql注入,请教各位朋友。谢谢。 [ 2.0 版本 ]
AR中有很多方法。
比如
model->findone(['id'=>1]);
请问这个查询,yii是否进行了参数化?
再比如
model->find()->where(['in','id','1,3,6']);
同上,现在自己写点小东西,越写心里越没谱,还希望有经验的帅哥们指导下,谢谢,如果上述方法框架自身没有进行参数化,那么现在趁早就全部改用参数方式来写了。免得最后害死人。
最佳答案
-
yii\db\Command.php
里面在createCommand的时候,会默认用bindValue对参数进行处理,所以你可以放心的用上述写法而不用担心注入问题。/** * Binds pending parameters that were registered via [[bindValue()]] and [[bindValues()]]. * Note that this method requires an active [[pdoStatement]]. */ protected function bindPendingParams() { foreach ($this->_pendingParams as $name => $value) { $this->pdoStatement->bindValue($name, $value[0], $value[1]); } $this->_pendingParams = []; }
共 3 条回复@naivefang 谢谢你。
其他 2 个回答
-
Yii自带的AR操作底层是基于pdo进行实现的,sql注入的问题不必担心,但是自己写sql之类的还是要很谨慎,建议用占位。参考博文 yii过滤xss代码,防止sql注入教程
xjdata
注册时间:2011-12-07
最后登录:2024-05-05
在线时长:112小时38分
最后登录:2024-05-05
在线时长:112小时38分
- 粉丝23
- 金钱14169
- 威望75
- 积分16039