Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ktoś włamał się do mojej bazy danych - jak?

mysql_real_escape_string

Jak wyjaśniono tutaj:Czy mysql_real_escape_string() W PEŁNI chroni przed wstrzyknięciem SQL?

Na podstawie Twojego fragmentu kodu połączyłeś bazę danych dwukrotnie.

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

I nie podałeś identyfikatora łącza do bazy danych dla :

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

W związku z tym mysql_set_charset nie ma wpływu na rzeczywisty kod ucieczki dostarczony$_POST dla znaków wielobajtowych.

Sugestia

  • usuń drugi mysql_connect($db_host,$username,$password);
  • wyraźnie dodaj $db_con podczas wykonywania mysql_real_escape_string


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd składni z IF EXISTS UPDATE ELSE INSERT

  2. Jak opróżnić bazę danych MySQL

  3. mysql wybierz najwyższe n maksymalne wartości

  4. Jaka jest różnica między MyISAM a InnoDB?

  5. Entity Framework z mysql, problem z kapitalizacją tabel między linuxem a Windows