我知道我可以使用预准备语句来阻止SQL注入。我可以使用MySQLi或PDO来做到这一点。但我开发了一个使用PHP / MySQL(mysql_query)的大型CRM。如果我必须将每个查询更改为PDO或MySQLi,则至少需要一个月。该脚本获得了超过500个MySQL查询语句。
我真的需要帮助。谁能告诉我如何防止SQL注入不使用MySQLi或PDO?
答案 0 :(得分:4)
任何人都可以告诉我如何防止SQL注入不使用MySQLi或PDO [在具有超过500个原始MySQL语句的现有应用程序中]?
没有
在架构上,您的应用程序需要从上到下的重写(关于其数据库访问结构)才能在Web上变得安全。与简单地实现可靠的SQL抽象层作为修订策略的一部分相比,使用数据清理程序和语句启发式方法将更加危险和耗时。
我的建议是你至少要实施 Doctrine 。可能Doctrine Database Abstraction Layer (DBAL)可能是一个好的开始,特别是对于像您描述的那样的遗留数据库策略的端口;或者使用Doctrine Object Relational Mapper (ORM)加快步伐。更好的是,使用已包含这些数据库库的框架构建您未来的应用程序(或应用程序重构),如Symfony 2或Silex。