我读了很多关于防止sql注入的类型。如果100%的情况有另一种方法可以阻止他们,我可能不想使用准备好的陈述。
目前我坚持这样做:
$safe_var = mysql_real_escape_string ( $unsafe_var);
mysql_set_charset("utf8");
$sql = "REPLACE `news` (`id`, `author`, `title`, `text`, `time`)" . "VALUES ('".$id."', '$author', '$title', '$text', UNIX_TIMESTAMP());";
mysql_query ( $sql );
对于此示例,sql语句中的所有变量都在start时构造为safe_var。我看到很多关于什么是sql保存的意见,什么不是,所以我不知道什么是正确的。 我的问题是,这是100%保存,是否可以在每个可能的sql语句中使用这种方式,通过使用mysql_real_escape_string并将变量放在单引号中,就像我在语句中所做的那样?
提前感谢您的帮助!
PS:我知道有很多问题喜欢这个,但每个人都在说不同的东西,我仍然没有发现任何人说我的方式在每个可能的陈述中都是安全的。答案 0 :(得分:-3)
至少你想要转换为mysqli而不是mysql。您还希望进一步测试用户输入,以确保其合法。
强烈推荐pdo和准备好的陈述