php - 如果我使用 CodeIgniter,清理 $_GET 以进行数据库搜索的最佳方法是什么?

标签 php mysql codeigniter

我正在编写一个搜索函数,使用户能够搜索我数据库中的特定表。我的网站在 CodeIgniter 上运行。

对于搜索功能,我使用 $_GET 而不是 CodeIgniter $this->input-get() 因为我在辅助函数中使用后者时遇到了问题。

现在,这是一个安全问题:

清理和过滤 $_GET 数组中的恶意字符以防止 XSS 和 SQL 注入(inject)的最佳方法是什么?

请记住,$_GET 数组中的数据将用于查询数据库并从中检索信息。

是否有一种递归的方法来清理整个 $_GET 数组而不必逐一检查元素?

我应该使用 PHP 的过滤方法还是 CodeIgniter 的?

任何建议将不胜感激! 提前致谢!

最佳答案

Codeigniter 默认禁用 $_GET。使用 URI 类,您可以模拟 $_GET 变量:

GET parameters in the URL with CodeIgniter

您可以绕过它并使用 $_GET,听起来您已经做到了。但我不建议这样做。你应该使用 CodeIgniter's Input class .这提供了 XSS 过滤,你可以通过运行清理整个 $_GET 数组:

$this->input->get(NULL, TRUE); // returns all GET items with XSS filter 

如果您使用 Codeigniter 的数据库实用程序类来运行您的查询,它有一个内置的转义函数。请查看转义查询部分。

http://ellislab.com/codeigniter/user-guide/database/queries.html

关于php - 如果我使用 CodeIgniter,清理 $_GET 以进行数据库搜索的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14538024/

相关文章:

php - 如何知道表中的任何行是否满足条件

php - 使用Codeigniter框架连接DSN

php - 从 Windows 任务计划程序运行批处理文件,但隐藏或最小化

mysql - 如何在单个查询中比较两个表的总和?

php - 在 mysql 中选择 LIKE 之前的最后 x 行

php - 从 MySQL 数据库检索图像的高度和宽度

php - JQuery Post 到 PHP 插入数据,但 json 响应为 null

php - if else 循环的逻辑问题

php - 在显示不同的所有国家/地区后,如何显示一个国家/地区在我的数据库中出现的次数?

mysql 子查询错误 [21000][1241] 操作数应包含 1 列