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

Penggunaan parameter untuk mysql_query

Pertama, ini tentang apa yang disebut SQL-Injection . Ini pada dasarnya hanya kemungkinan untuk mengubah kueri terhadap database melalui input pengguna.

Mari kita lihat contohnya:

Pertanyaan:

SELECT temp1 FROM temp WHERE temp2 = 'VAR1';

Sekarang kita akan menetapkan VAR1 nilai:'; DROP TABLE *; -- Dan kita akan mendapatkan:

SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';

Dengan mysql_real_escape_string akan terlihat seperti ini:

SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'

mysql_real_escape_string 'mengamankan' string untuk digunakan dalam kueri.

Tetapi pada akhirnya, Anda harus berhenti menggunakan mysql_* sama sekali . Mereka tidak digunakan lagi dan dianggap tidak aman dalam hal mencegah injeksi SQL atau cara lain untuk meredam kueri.

Anda sebaiknya berhenti menggabungkan kueri seperti ini dan mulai gunakan pernyataan yang sudah disiapkan , yang tidak hanya lebih mudah digunakan, mencegah SQL Injection secara default tetapi juga dapat meningkatkan kecepatan aplikasi Anda.

Untuk PHP ada dua ekstensi yang dirancang untuk menutup seluruh mysql_* dibuka:

Dan saya katakan lagi:Tolong berhenti menggunakan mysql_* !



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan struktur tabel dari file frm dan ibd

  2. Cara mengirim email dari MySQL 5.1

  3. MySQL TAMBAHKAN KOLOM

  4. Enum di Hibernate, bertahan sebagai enum

  5. Bagaimana cara mendapatkan catatan RANDOM dari setiap kategori di MySQL?