Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelqu'un a piraté ma base de données - comment ?

mysql_real_escape_string

Comme expliqué ici :Mysql_real_escape_string() protège-t-il COMPLÈTEMENT contre l'injection SQL ?

D'après votre extrait de code, vous avez connecté la base de données deux fois.

$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); 

Et vous n'avez pas fourni l'identifiant du lien de la base de données pour :

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

Par conséquent, mysql_set_charset n'a aucun effet sur l'échappement réel fourni $_POST pour les caractères multi-octets.

Suggestion

  • supprimer le second mysql_connect($db_host,$username,$password);
  • ajouter explicitement $db_con lors de l'exécution de mysql_real_escape_string