codeigniter hook post 并获取安全处理数据(SQL 注入)

codeigniter hook post and get data for security processing (SQL injection)

我刚刚继承了一个大项目,我必须重新保护它,它是用code-igniter(php)编写的,不幸的是整个事情都来不及做PDO和绑定,它建立在mysqli之上。因此,我正在考虑使用挂钩来预处理(输入清理)post 并在请求到达控制器之前获取请求(基本上是进行字符串转义等)关于此的任何想法和建议?

谢谢。 麦克风。

预处理 $_GET 和 $_POST 是 PHP 的 Magic Quotes 功能背后的想法。结果证明这是个坏主意,所以 PHP 弃用了它并最终在 PHP 7.0 中将其删除。这是一个坏主意,因为它试图成为一种放之四海而皆准的解决方案,并且当您 希望您的表单输入预先-已处理。

如果当前应用程序是基于 mysqli 构建的,那么使用参数化查询还为时不晚,只是需要一些工作。

您不必切换到 PDO。您也可以使用 mysqli 进行参数绑定。请参阅 mysqli_prepare(), or this popular Stack Overflow answer: How can I prevent SQL injection in PHP?

文档中的示例

为了它的价值,在我之前的工作中,我将 PHP 应用程序的管理模块从旧的 "mysql" API 转换为使用 PDO,对所有动态值使用参数绑定.时间不长,半天左右。我在不到 100 个文件中修改了数据库调用。创建一个接受 SQL 字符串和数组的辅助函数非常有帮助,它会 运行 PDO prepare() 和 execute() 以及 fetchAll(),正确处理每个步骤的错误。

$resultSet = QueryWithParams($sqlQuery, $paramArray);

如果您继续使用字符串转义,请使用 mysqli_real_escape_string()。不要尝试编写自己的函数来进行转义。