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

Permintaan injeksi MySQL

Kecuali jika Anda menyertakan tanda kutip tunggal di name . yang diposting , yang akan memungkinkan Anda untuk keluar dari tanda kutip. Contoh, posting nama sebagai:

' or 1 or '

Klausa WHERE menjadi:

WHERE id = '' or 1 or '';

Ini akan mencocokkan dan mengambil semua baris dalam tabel karena or 1 bagian. Seperti yang Anda lihat, ia keluar dari tanda kutip untuk menyuntikkan beberapa SQL, lalu kembali ke tanda kutip untuk membuat kueri valid.

Tidak, tetapi jika dijalankan dengan mysqli_multi_query maka ya, Anda dapat menambahkan beberapa kueri di akhir.

Umumnya ya tetapi Pernyataan yang Disiapkan akan lebih baik. Menggunakan melarikan diri, WHERE klausa akan menjadi (menggunakan contoh saya di atas):

WHERE id = '\' or 1 or \'';

Ini tidak lagi rentan karena tanda kutip tidak dapat dipisahkan, dan hanya akan cocok dengan baris jika name benar-benar cocok dengan ' or 1 or ' yang jelas tidak mungkin.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ambil data 3 bulan terakhir sebagai kolom terpisah bukan baris untuk setiap pengguna

  2. mysql_query():cara memeriksa apakah ada baris yang diperbarui jika ada UPDATE SQL

  3. kerangka kerja entitas 4 penghematan masalah unicode

  4. PDO menghapus baris tertentu dari tabel

  5. Cara menonaktifkan indeks di innodb