Php codeigniter钩住并获取用于安全处理的数据(SQL注入)
我刚刚继承了一个大项目,我必须重新保护它,它是用CodeIgniter php编写的,不幸的是,现在做PDO和绑定已经太晚了,因为它是基于mysqli构建的。所以我在考虑使用钩子来预处理输入,在它们到达控制器之前清理post并获取请求,基本上进行字符串转义等等,有什么想法和建议吗 Thx。Php codeigniter钩住并获取用于安全处理的数据(SQL注入),php,codeigniter,mysqli,sql-injection,Php,Codeigniter,Mysqli,Sql Injection,我刚刚继承了一个大项目,我必须重新保护它,它是用CodeIgniter php编写的,不幸的是,现在做PDO和绑定已经太晚了,因为它是基于mysqli构建的。所以我在考虑使用钩子来预处理输入,在它们到达控制器之前清理post并获取请求,基本上进行字符串转义等等,有什么想法和建议吗 Thx。 迈克 预处理$\u GET和$\u POST是PHP特性背后的思想。结果证明这是一个坏主意,所以PHP不赞成它,并最终在PHP7.0中删除了它。这是一个坏主意,因为它试图成为一个一刀切的解决方案,而当您不希望
迈克 预处理$\u GET和$\u POST是PHP特性背后的思想。结果证明这是一个坏主意,所以PHP不赞成它,并最终在PHP7.0中删除了它。这是一个坏主意,因为它试图成为一个一刀切的解决方案,而当您不希望表单输入经过预处理时,这并不能解释许多合法的情况 现在使用参数化查询还不算太晚,如果当前的应用程序是基于mysqli构建的,那就需要做一些工作 你不必切换到PDO。您也可以使用mysqli进行参数绑定。请参阅文档中的示例,或此流行的堆栈溢出答案: 值得一提的是,在我以前的工作中,我将PHP应用程序的管理模块从旧的mysql API转换为使用PDO,对所有动态值使用参数绑定。没多久,大约半天。我在不到100个文件中修改了数据库调用。创建一个接受SQL字符串和数组的helper函数非常有帮助,它将运行PDO prepare、execute和fetchAll,为每个步骤正确处理错误
$resultSet = QueryWithParams($sqlQuery, $paramArray);
如果继续使用字符串转义,请使用。不要试图编写自己的函数来进行转义。答案太棒了。它清除了很多方面。我将实施你的笔记,并让你知道它如何与项目进行。