如果插入用户输入而不修改SQL查询,则应用程序容易受到SQL注入的攻击,如下例所示:
$unsafe_variable = $_POST['user_input'];
mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
Run Code Online (Sandbox Code Playgroud)
这是因为用户可以输入类似的内容value'); DROP TABLE table;--,查询变为:
INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
Run Code Online (Sandbox Code Playgroud)
可以采取哪些措施来防止这种情况发生?
我在mysql_query()整个项目中都使用过; 但我刚刚了解到mysql_PHP 5.5已被弃用,已在PHP 7中删除.
那么,我想知道我是否可以盲目地替换我项目中的所有mysql_功能mysqli_?例如,只需替换mysql_query()为mysqli_query().有不良影响吗?