如何防止sql注入? 而不用修改成SQL查询
这个问题在这里已经有了答案:
你需要在这里完成的绝对最小值是逃避这个变量:
$unsafe_variable = mysql_real_escape_string($_POST['user_input']);
您的查询中没有任何内容需要更改。 然而,这并不一定是故事的结尾,因为mysql_real_escape_string
不是无懈可击的,而且您仍然接触到使用更复杂技术的人的注入式攻击。
整个mysql_query
API已被废弃,已过时,最新版本的PHP不再支持它。 你需要改进一些,我建议把PDO作为基准。
确保你做得对的最好方法是使用带有占位符值的准备好的语句。 这就是你的查询看起来像这样:
INSERT INTO table name (column1) VALUES (:column1)
通过PDO,您可以命名您的占位符。 这使得稍后执行语句非常简单,只需匹配值即可:
$stmt->execute(array('column1' => $_POST['user_input'));
所以避免注射缺陷的最好方法是首先避免注射。 占位符值将被正确,安全,最重要,一致地代替。 所需要的只是一个错误,你认为你逃脱了某些东西,但是你没有,而且人们可以将你的网站打开。
链接地址: http://www.djcxy.com/p/2741.html上一篇: How to prevent sql Injection? without modification into an SQL query