可用于在代码中进行注入的所有 MySQL 命令是什么?
我禁用了 UNION 和 CONCAT。
我有一个非常基本的应用程序,所以不需要任何复杂的查询,那么我还能禁用什么来确保注入不是问题?
是的,据我所知,我已经清理了所有变量。问题是它是一个多方参与的项目,我注意到在一些我被委托使用的库中有些草率的工作。
我正在考虑让所有帖子变量对它们进行消毒并将它们放回原处,但由于某些帖子变量的复杂多维性质,这将是一项相当复杂的任务。
可用于在代码中进行注入的所有 MySQL 命令是什么?
我禁用了 UNION 和 CONCAT。
我有一个非常基本的应用程序,所以不需要任何复杂的查询,那么我还能禁用什么来确保注入不是问题?
是的,据我所知,我已经清理了所有变量。问题是它是一个多方参与的项目,我注意到在一些我被委托使用的库中有些草率的工作。
我正在考虑让所有帖子变量对它们进行消毒并将它们放回原处,但由于某些帖子变量的复杂多维性质,这将是一项相当复杂的任务。
几乎任何类型的 SQL 语句都可以进行注入。
避免注入的唯一安全方法是使用准备好的语句并将数据绑定到查询参数。
您不能简单地禁用关键字,请查看以下示例:
SELECT id FROM user WHERE name='*' AND password = ' whatever' OR password <> '
'
您需要先转义用户输入,然后再将其添加到 SQL 语句(例如mysqli_real_escape_string()
)。更好的是使用 PDO 准备好的语句。
[...] 确保注射不是问题?
那是做不到的。如果 SQL 注入是可能的,那么它们就是一个问题。