Mysql
 sql >> Database >  >> RDS >> Mysql

Qualcuno ha violato il mio database - come?

mysql_real_escape_string

Come spiegato qui:mysql_real_escape_string() protegge COMPLETAMENTE dall'iniezione SQL?

In base allo snippet di codice, hai connesso il database due volte.

$db_con=mysql_connect($db_host,$username,$password);    

$connection_string=mysql_select_db($db_name);
mysql_connect($db_host,$username,$password);    
mysql_set_charset('utf8',$db_con); 

E non hai fornito l'identificatore del collegamento al database per :

$email= mysql_real_escape_string($_POST['email']);
$name= mysql_real_escape_string($_POST['name']);
$sex= mysql_real_escape_string($_POST['sex']); 

Pertanto, mysql_set_charset non ha alcun effetto sull'escape reale fornito$_POST per caratteri multibyte.

Suggerimento

  • rimuove il secondo mysql_connect($db_host,$username,$password);
  • aggiungi esplicitamente $db_con quando si esegue mysql_real_escape_string