Php codeigniter查询生成器和活动记录sql注入

Php codeigniter查询生成器和活动记录sql注入,php,mysql,codeigniter,security,Php,Mysql,Codeigniter,Security,自从我在SO中提出最后一个问题以来,我一直在阅读一些关于如何防止sql注入的内容,许多人提到了活动记录类。但当我搜索它时,它只存在于CodeIgniter2中 因此,我的问题是: codeigniter 3中的查询生成器类是活动记录类的升级版本还是它们有不同的用途 (通常)使用诸如$this->where('field',$foo)这样的查询生成器类方法是否足够而不是$this->where(“field='$foo'”以防止sql注入 另外,我使用的是codeigniter 3和mysql,A

自从我在SO中提出最后一个问题以来,我一直在阅读一些关于如何防止sql注入的内容,许多人提到了活动记录类。但当我搜索它时,它只存在于CodeIgniter2中

因此,我的问题是:

  • codeigniter 3中的查询生成器类是活动记录类的升级版本还是它们有不同的用途

  • (通常)使用诸如
    $this->where('field',$foo)这样的查询生成器类方法是否足够
    而不是
    $this->where(“field='$foo'”以防止sql注入


  • 另外,我使用的是codeigniter 3和mysql,ActiveRecord在codeigniter 2中,但在codeigniter 3中,您使用的是QueryBuilder。这两个类为您做相同的工作,也许QueryBuilder是ActiveRecord的改进版本。在像Yi2这样的其他框架中,ActiveRecord不仅是一个ORM查询字符串生成器,而且在CI中是一个简单的查询生成器

    2-Codeigniter将自动转义所有传递的参数,但我建议您在运行查询之前验证输入。例如,数字id字段的值应该是数字,而不是字符串,因此id输入的规则应该是整数。 您可以在官方文档中看到Codeigniter 3中的验证:

    您应该做的所有工作就是将字段值作为函数参数传递,而不是作为字符串(字段和值一起传递)。如果要在不使用QueryBuilder的情况下运行查询,则必须手动转义参数。您可以在Codeigniter文档中获得更多信息:


    看一看:是的,我在提问之前读过这个问题。这个问题没有回答我这里的任何一个问题。这里有太多不同的观点,无法得出任何结论。