这个问题在这里已有答案:
如果用户输入是在没有修改的情况下从 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;--')
可以采取哪些措施来防止这种情况发生?
1 回答
通过简单的Google搜索提供了大量信息,可以指导您正确的方向 . 首先:
DON'T USE MYSQL_ FUNCTIONS* 这些是deprecated并将生成警告 . 它们甚至不是现代Web开发的远程良好实践 .
USE A DATABASE LIBRARY INSTEAD 喜欢PDO或MySQLi . 有很多教程可以帮助您入门,最重要的是这些库 take care of SQL injection for you . 所以使用它们!