我正在编写一个搜索函数,使用户能够搜索我数据库中的特定表。我的网站在 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/