2019-11-26 09:12:29 129次浏览 1条回答 0 悬赏 50 金钱

如下程序:

public actionInfo($name, $flag)
{
    $info = Manage::find()->where(['name'=>$name,'flag'=>$flag])->all();
    ........
}

这样写的话有没有问题,其中的 $name, $flag 需不要做做参数绑定来防止攻击呢?

亿速云

最佳答案

  • 醉丶春风 发布于 2019-11-26 14:30 举报

    使用哈希格式,Yii 在内部对相应的值进行参数绑定,与 字符串格式 相比, 此处你不需要手动添加参数绑定。但请注意,Yii 不会帮你转义列名,所以如果你 从用户端获得的变量作为列名而没有进行任何额外的检查,对于 SQL 注入攻击, 你的程序将变得很脆弱。为了保证应用程序的安全,请不要将变量用作列名 或者你必须用白名单过滤变量。如果你实在需要从用户获取列名,请阅读 过滤数据 章节。例如,以下代码易受攻击:

    https://www.yiichina.com/doc/guide/2.0/db-query-builder#hash-format

    1 条回复
    回复于 2019-11-29 15:39 回复

    非常感谢大神

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
wenlife207
见习主管

wenlife207

注册时间:2014-12-18
最后登录:2天前
在线时长:20小时48分
  • 粉丝2
  • 金钱100
  • 威望0
  • 积分300

热门问题