我刚开始建立一个网站,我不断听到越来越多关于使用mysqli_real_escape_string
的信息,但即使我知道如何使用它,我也不确定何时使用它。从我所看到的,当用户在我的网站上输入内容时,我真的只需要使用它吗?目前我正在使用大量的jquery.post在页面之间发送数据,其中一些已经从数据库中获取,一些来自用户输入,因此它是正确的,以逃避传递的所有内容或只是用户添加?
目前我的代码是:
$con = //Connection to Database
$time = time();
$id= time().'-'.mt_rand(1000, 9999);
$poster= mysqli_real_escape_string($con, $_REQUEST["poster"]);
$type= mysqli_real_escape_string($con, $_REQUEST["type"]);
$post= mysqli_real_escape_string($con, $_REQUEST["post"]);
$lat= mysqli_real_escape_string($con, $_REQUEST["lat"]);
$lon= mysqli_real_escape_string($con, $_REQUEST["lon"]);
etc
etc
答案 0 :(得分:0)
你几乎不应该使用它。使用准备好的陈述和bound parameters代替。
无论您使用什么来保护数据库不被注入,都应该将它应用于所有非SQL显式的内容。这包括另一个查询从数据库中取出的数据(尽管您可能希望在这种情况下使用JOIN来减少查询数量。)
数据库中已经发出的数据,已被发送到浏览器然后被发回,必须被视为用户输入。它一直在用户手中,可以由他们修改。
(并且不允许用户将“显式SQL”数据传递到您的服务器,除非您正在编写需要自定义查询的内容(如phpMyAdmin)并且您信任用户很多)
答案 1 :(得分:-1)