2

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

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

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

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

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

有没有一种递归方式来清理整个 $_GET 数组而不必逐个遍历元素?

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

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

4

2 回答 2

4

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

使用 CodeIgniter 获取 URL 中的参数

您可以绕过它并使用 $_GET,听起来您已经完成了。但我不建议这样做。您应该使用CodeIgniter 的 Input 类。这提供了 XSS 过滤,您可以通过运行以下命令清理整个 $_GET 数组:

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

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

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

于 2013-01-26T15:22:51.623 回答
2

您可以使用 $this->db->e​​scape($variable) 来转义查询中的值。强烈建议使用 CI 的输入类。

阅读更多:http ://ellislab.com/codeigniter/user-guide/database/queries.html

于 2013-01-26T14:58:58.073 回答