php - 在没有预先准备好的语句的情况下清理 MySQL 查询(PHP + 旧的 mysql 模块)

标签 php mysql sql-injection

注意:我看过这个问题:Preventing SQL injection without prepared statements (JDBC) .正如我预料的那样……答案是使用准备好的语句。我处于不同的环境中......所以我想知道最好的方法。

我正在使用下载的脚本 (phpsimplechat),作者在其中编写了他自己的简单 SQL 层(注意:它支持 PostgreSQL 和 MySQL)。不幸的是,我已经对它进行了一些测试,它容易受到 SQL 注入(inject)攻击。从功能的角度来看,该脚本可以满足我的所有需求,因此我想挽救它。

幸运的是,它是开源的...但我宁愿不重写所有 SQL 查询以在 phpsimplechat 中使用准备好的语句。第 3 方库使用它自己的 SQL 层而不是 PDO ......并且在它下面使用旧的 mysql 模块(因此,我不能使用准备好的语句。即使我更改了 mysql -> mysqli,我也必须处理“dbQuery “他放在所有代码之上的层)。我不需要 PostgreSQL 代码,所以答案可以是特定于 MySQL 的。

我读到 addslashes 不足以防止所有 SQL 注入(inject)尝试。 mysql_real_escape_string 使用安全吗?

最佳答案

是的,mysql_real_escape_string 如果您正确使用它,保证是安全的,即确保转义出现在查询中的所有字符串。

关于php - 在没有预先准备好的语句的情况下清理 MySQL 查询(PHP + 旧的 mysql 模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3951133/

相关文章:

javascript - 无法填写文本/字符串下拉值

php - 在Perl程序中使用linux命令,通过php exec()使用Perl

php - 对数据库执行计算

php - mysql - 从两个表中选择多列值

php - 使用空参数运行 PHP 搜索脚本会返回整个 MySQL 表

PHP - 获取远程文件的 md5?

mysql - JPA 类型映射问题

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - 多行查询 sql 注入(inject)安全吗?

php - YII2.0查询多数据库