在 php 中防止 sql 注入

preventing sql injection in php

如果用户输入是在未修改 SQL query 的情况下插入的,则应用程序容易受到 SQL injection 的攻击,如以下示例所示:

$unsafe_variable = $_POST['user_input']; 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");

那是因为用户可以输入类似值 '); DROP TABLE table;--, 的内容,查询变为:

INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')

如何防止这种情况发生?

通过简单的 Google 搜索可以找到 广泛的 信息,可以指导您朝着正确的方向前进。不过要开始:

不要使用我的SQL_* 函数 这些是 deprecated 并且会产生警告。它们 甚至不是现代 Web 开发的好实践

使用数据库库代替,如PDO or MySQLi。有很多教程可以帮助您入门,最重要的是这些库 会为您处理 SQL 注入 。所以使用它们!