2017-03-09 19:29:19 9756次浏览 3条回答 0 悬赏 20 金钱

引用权威指南的一句话:在 Yii 中,大部分的数据查询是通过 Active Record 进行的, 而其是完全使用 PDO 预处理语句执行 SQL 查询的。在预处理语句中,上述示例中,构造 SQL 查询的场景是不可能发生的。

http://www.yiichina.com/doc/guide/2.0/security-best-practices

我理解是我用这几种方式都安全?

$model->find()->where(['id'=>$id])    //哈希格式
$model->find()->where("id=$id")  //字符串格式
$model->find()->where(['=','id',$id]) //操作符格式
  • 回答于 2017-03-11 21:11 举报

    $model->find()->where([ 'id' => $id ])
    第一我记得这种应该是安全的,因为会做bind 操作,如果不放心可以对 $id在使用前进行处理比如 (int)$id or 长度监测之类的

    其实更好的办法是在 架构设计和数据库设计的时候去屏蔽这种问题

    2 条回复
    回复于 2017-03-14 16:18 回复

    $model->find()->where([ 'id' => $id ]) 这块在ar里面做bind的操作是哪个文件哪一行,我没有找到?

    回复于 2017-03-23 11:54 回复

    好久不看源码了,自己查下吧,这样肯定是安全的。

  • 回答于 2017-03-13 09:18 举报

    bindParam bindValue 这样是最安全的

  • 回答于 2017-03-20 09:35 举报

    hash正解, ['id'=>$id]

您需要登录后才可以回答。登录 | 立即注册
sturn
主管

sturn

注册时间:2012-01-29
最后登录:2020-04-02
在线时长:50小时6分
  • 粉丝5
  • 金钱405
  • 威望0
  • 积分905

热门问题