如果用户输入未经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;--')
可以采取哪些措施来防止这种情况发生?
答案 0 :(得分:2)
通过简单的Google搜索提供广泛的信息,可以指导您朝着正确的方向前进。首先:
不要使用MYSQL_ *函数这些是deprecated并会生成警告。它们甚至不是现代Web开发的远程良好实践。
使用数据库库INSTEAD ,例如PDO或MySQLi。有很多教程可以帮助您入门,最重要的是这些库 为您处理SQL注入 。所以使用它们!