Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php codeigniter钩住并获取用于安全处理的数据(SQL注入)_Php_Codeigniter_Mysqli_Sql Injection - Fatal编程技术网

Php codeigniter钩住并获取用于安全处理的数据(SQL注入)

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中删除了它。这是一个坏主意,因为它试图成为一个一刀切的解决方案,而当您不希望

我刚刚继承了一个大项目,我必须重新保护它,它是用CodeIgniter php编写的,不幸的是,现在做PDO和绑定已经太晚了,因为它是基于mysqli构建的。所以我在考虑使用钩子来预处理输入,在它们到达控制器之前清理post并获取请求,基本上进行字符串转义等等,有什么想法和建议吗

Thx。
迈克

预处理$\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);

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

答案太棒了。它清除了很多方面。我将实施你的笔记,并让你知道它如何与项目进行。