我正在尝试通过检查几个不同的数据库字段来构建一个 MySQL 查询以返回适当的搜索结果。例如,如果用户搜索“plumber leeds”,如果一家企业在“城市”字段中有“leeds”并且名称中包含“plumber”一词,我希望返回该搜索结果。
用户搜索可能包含多个词并且是不可预测的。我目前正在通过展开搜索词、修剪它并使用它来编译复杂的搜索查询以返回所有相关结果来实现我的需要。
我将这个复杂的查询存储在一个变量中,并使用 Codeigniter 的 Active Record 来运行查询。
$this->db->where($compiled_query, null, false);
我担心的是我没有用反引号保护查询,我不确定这是否是一个安全问题。我启用了 XSS Clean,但仍不确定这是否正常。
根据 CI 的用户手册: $this->db->where() 接受可选的第三个参数。如果您将它设置为 FALSE,CodeIgniter 将不会尝试使用反引号保护您的字段或表名。
来源:http://ellislab.com/codeigniter/user-guide/database/active_record.html
一些关于我如何在一个单独的问题中编译查询的信息。我知道 mysql_real_escape_string 即将被弃用并且不是包罗万象的,因此我对这种方法的部分担忧。
感谢任何帮助
最佳答案
反引号与安全无关。它们实际上只是一种“字符串化”你的字段和表名的方法,这样你就可以使用一个名为 datatype
的字段,而不会与 mysql 关键字发生冲突
你很安全
关于mysql - Codeigniter 复杂的 MySQL 查询 - 删除反引号 - 这是一个安全问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14678168/