我正在开发一个 Codeigniter 2 项目,该项目无法升级到 v.3。到目前为止,我在使用查询构建器时遇到了一个难题,尤其是当我需要进行更复杂的查询时。 CI v.3 通过使用 ->group_start() 和 ->group_end() 很好地处理了它,但 CI v.2 没有。 现在,我的困境如下:仅使用自定义 where 查询是否安全?
$this->db->where("name='$name' AND status='boss' OR status='active'");
查询构建器是否对其进行了足够的清理,或者我应该采用额外的清理(第三个参数保留为默认值 - true)?
** 更新 **
我没有准确地写下我需要这个的复杂查询。沿着这个逻辑的某个地方:
A=1 && B=2 && C=3 && (D=10 || E=20 || F=30)
最佳答案
来自文档,https://codeigniter.com/userguide2/database/active_record.html#select
Note: All values passed to this function are escaped automatically, producing safer queries.
我假设的是,如果你正确使用它,而不是像你想的那样直接插入变量。
所以我会这样做(如果我使用 CI :/)
$this->db->where('name', $name);
$this->db->where("(status='boss' OR status='active')", NULL, FALSE);
..丑陋
关于php - 使用 Codeigniter 查询生成器自定义 where 字符串的安全性/漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47411613/