2019-05-29 11:32:04 1323次浏览 2条回答 0 悬赏 20 金钱

代码如下:

public function search($key){
    ...
    $query->where('like','name',$key)
    ...
}

这样写会不会有安全问题???
还有能不能这样写:

$query->where('like','name',':key')
    ->addParam([':key'=>$key]);

希望能有谁指点下。谢谢

最佳答案

  • 发布于 2019-05-29 12:13 举报

    首先,代码中对于 where 函数的用法 是 不正确的,这里说 三种情况:

    1、$query->where(['like', 'name', $key])                      // 这种是安全的
    
    2、$query->where("name like '%$key%'")                       // 这种是不安全的,需要考虑被注入
    
    3、$query->where("name like :key")->addParams([":key" => "%$key%"])       // 这种是安全的
    
  • 回答于 2019-09-23 16:11 举报

    这种写法比较常见,且安全又整洁的写法。
    ``
    $query->where(['like', 'name', $key])

您需要登录后才可以回答。登录 | 立即注册
sk811229
经理

sk811229

注册时间:2018-05-23
最后登录:2022-10-06
在线时长:16小时47分
  • 粉丝0
  • 金钱770
  • 威望10
  • 积分1030

热门问题