首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codeigniter Complex MySQL Query - Removing Backticks这是一个安全问题吗?

Codeigniter Complex MySQL Query - Removing Backticks这是一个安全问题吗?
EN

Stack Overflow用户
提问于 2013-02-04 06:35:48
回答 2查看 1.2K关注 0票数 1

我正在尝试通过检查几个不同的数据库字段来构建一个MySQL查询,以返回适当的搜索结果。例如,如果用户搜索“管道工利兹”,如果一家企业在“城市”字段中有“利兹”,并且名称中有“管道工”一词,我希望返回该搜索结果。

用户搜索可能包含多个单词,并且是不可预测的。我目前正在通过分解搜索词,修剪它,并使用它来编译一个复杂的搜索查询,以返回所有相关的结果,从而实现我所需要的。

我将这个复杂的查询存储在一个变量中,并使用Codeigniter的活动记录来运行该查询。

代码语言:javascript
复制
$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即将被弃用,并且不是一个包罗万象的方法,因此我对此方法的部分担忧。

https://stackoverflow.com/questions/13321642/codeigniter-active-record-sql-query-of-multiple-words-vs-multiple-database-fi

感谢您的任何帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-04 09:28:09

我不会说你绝对是“安全的”,因为如果你在SQL查询中接受用户输入,你在技术上永远不会安全(即使你已经操纵过它……有志者事有成)。

一旦放弃了对应用程序的控制,就必须非常小心地处理这些数据,以免受到注入攻击。

XSS Clean将帮助处理POST或cookie数据--它不会在GET变量上自动运行。如果输入来自GET数组,我会手动运行$data = $this->security->xss_clean($data);

票数 1
EN

Stack Overflow用户

发布于 2013-02-04 06:56:18

倒计时与安全无关。它们实际上只是一种“字符串化”字段和表名的方法,这样您就可以使用一个名为datatype的字段,而不会与mysql关键字冲突。

你很安全

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14678168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档