Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Seseorang telah meretas database saya - bagaimana caranya?

mysql_real_escape_string

Seperti yang dijelaskan di sini:Apakah mysql_real_escape_string() SEPENUHNYA melindungi terhadap injeksi SQL?

Berdasarkan cuplikan kode Anda, Anda telah menghubungkan database dua kali.

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

Dan Anda tidak memberikan pengenal tautan basis data untuk :

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

Oleh karena itu, mysql_set_charset tidak berpengaruh pada pelarian nyata yang disediakan$_POST untuk karakter multi-byte.

Saran

  • hapus mysql_connect($db_host,$username,$password); kedua
  • tambahkan $db_con secara eksplisit saat melakukan 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. Apa alternatif klausa LIMIT di JPQL?

  2. Perbarui tabel dari tabel lain dan database yang berbeda

  3. Di MySQL, fungsi CHAR() berfungsi aneh

  4. Menghubungkan ke database jarak jauh dari komputer localhost menggunakan mysql dan PHP

  5. Bagaimana cara memilih baris dengan nilai maksimum untuk kolom di MySQL?