是我使用mysql的方式,完全从SQL注入中保存


Is my way of using mysql completly save from SQL Injection?

我读了很多关于防止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语句中的所有变量在开始时都被构造为safe_var。我看到很多关于在sql中保存什么和不保存什么的意见,所以我不知道什么是正确的。我的问题是,这是100%保存吗?在每一个可能的sql语句中使用这种方式,使用mysql_real_eescape_string并像我在语句中那样将变量放在单引号中,这是保存吗?

提前感谢您的帮助!

附言:我知道有很多这样的问题,但每个人都在说不同的话,我仍然没有发现任何人在每一句可能的语句中都说我的方法是安全的,不会被sql注入。

至少您希望转换为mysqli而不是mysql。您还希望尽可能多地进一步测试用户输入,以确保其合法性。

强烈推荐pdo和准备好的报表