sql >> Base de Datos >  >> RDS >> Mysql

Alguien ha pirateado mi base de datos, ¿cómo?

mysql_real_escape_string

Como se explica aquí:¿mysql_real_escape_string() protege TOTALMENTE contra la inyección de SQL?

Según su fragmento de código, ha conectado la base de datos dos veces.

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

Y no proporcionó el identificador de enlace de la base de datos para:

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

Por lo tanto, mysql_set_charset no tiene efecto en el escape real proporcionado $_POST para caracteres de varios bytes.

Sugerencia

  • elimine el segundo mysql_connect($db_host,$username,$password);
  • añadir explícitamente $db_con al hacer mysql_real_escape_string