| 
	
 | 
 Posted by Malcolm Dew-Jones on 09/07/05 02:03 
frizzle (phpfrizzle@gmail.com) wrote: 
: Hi there, 
 
: I was wondering the folllowing: when i insert something 
: into a mySQL DB -in a guestbook for instance- i mostly use 
: mysql_escape_string($_POST['comment'). now i've seen 
: mysql_real_escape_string, and i was wondering if there's a 
: big  difference between them, but most of all, i was wondering 
 
The manual says that mysql_escape_string is deprecated, and replaced with 
mysql_real_escape_string, which is basically "identical" in functionality. 
 
mysql_real_escape_string is better because it considers the character set 
of the database (connection?) to ensure that all the correct things are 
escaped, where as the old function does not do that. 
 
In other words you should replace mysql_escape_string with 
mysql_real_escape_string, if you have the necessary version of php, and 
everything should continue to work as before (though the new function 
needs a database connection, so it is not quite a drop in replacement). 
 
: if 'addslashes()' is safe enough, because i noticed that 
: stripslashes() doesn't strip all 'mysql_escape_string' slashes, 
: but does strip all 'addslashes()' ... :-s 
 
You should use the escape routine that is specific to what you are doing 
to be sure the correct things are escaped.  I.e.  If you are sending data 
to a database you should escape using the database escape routine.  If you 
were sending literal data to html then you would escape using an html 
escape routine.  If you are using literal data in regular expressions then 
use that escape routine (quotemeta() I believe), etc, etc... 
 
(If you have the magic quote stuff turned on then you may end up escaping 
some things twice, which is a bug you would want to fix, but that will not 
normally be a security risk.) 
 
-- 
 
This programmer available for rent.
 
[Back to original message] 
 |