如果插入用户输入而不修改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_*功能的技术原因是什么?(例如mysql_query(),mysql_connect()或mysql_real_escape_string())?
即使他们在我的网站上工作,为什么还要使用其他东西?
如果他们不在我的网站上工作,为什么我会收到错误
警告:mysql_connect():没有这样的文件或目录
有没有之间的差异isset和!empty.如果我做这个双布尔检查,这种方式是正确的还是多余的?有没有更短的方法来做同样的事情?
isset($vars[1]) AND !empty($vars[1])
Run Code Online (Sandbox Code Playgroud) <button type="button" name="theButton">SUBMIT</button>和之间是否有任何重大差异<input type="submit" value="SUBMIT" name="theButton" />
还有,你能用<button type="submit" name="theButton">SUBMIT</button>吗?