注意:我看过这个问题:Preventing SQL injection without prepared statements (JDBC)。正如我有点期待的那样......答案是使用准备好的陈述。我处于不同的情况......所以我想知道最佳途径。
我正在使用下载的脚本(phpsimplechat),其中作者编写了自己的简单SQL层(注意:它支持PostgreSQL和MySQL)。不幸的是,我已经对它进行了一些测试,它很容易受到SQL注入攻击。该脚本只是从功能的角度来做我想做的一切,所以我想挽救它。
幸运的是,它是开源的...但我不想重写所有SQL查询以在phpsimplechat中使用预准备语句。第三方库使用自己的SQL层而不是PDO ...并在其下使用较旧的mysql模块(因此,我不能使用预处理语句。即使我更改了mysql - > mysqli,我也必须处理“ dbQuery“他放在他所有代码之上的层”。我不需要PostgreSQL代码,因此答案可以是MySQL特定的。
我已经读过,addslashes不足以防止所有SQL注入尝试。 mysql_real_escape_string可以安全使用吗?
答案 0 :(得分:2)
是的,mysql_real_escape_string
如果您正确使用它,则保证是安全的,即确保查询中出现的所有字符串都被转义。