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

Karakter mana yang sebenarnya mampu menyebabkan injeksi SQL di MySQL?

Mempertimbangkan baris di bawah ini dari mysql_real_escape_string() panduan :

Injeksi SQL di MySQL seharusnya tidak dimungkinkan dengan karakter khusus ini saja:\b \0 \n \r \t \Z .

Namun manual String Literals menyatakan yang berikut ini tetapi alasan yang ditentukan ( atau tidak ) tidak berhubungan dengan injeksi SQL :

Selanjutnya , dalam tes sederhana , terlepas dari cuaca karakter khusus yang tercantum di atas lolos atau tidak , MySQL menghasilkan hasil yang sama . Dengan kata lain MySQL bahkan tidak keberatan :

$query_sql = "SELECT * FROM `user` WHERE user = '$user'";

Kueri di atas bekerja dengan cara yang sama untuk versi yang tidak lolos dan yang lolos dari karakter yang tercantum di atas seperti di bawah ini :

$user = chr(8);     // Back Space
$user = chr(0);     // Null char
$user = chr(13);    // Carriage Return
$user = chr(9);     // Horizontal Tab
$user = chr(26);    // Substitute
$user = chr(92) .chr(8);    // Escaped Back Space
$user = chr(92) .chr(0);    // Escaped Null char
$user = chr(92) .chr(13);   // Escaped Carriage Return
$user = chr(92) .chr(9);    // Escaped Horizontal Tab
$user = chr(92) .chr(26);   // Escaped Substitute

Tabel pengujian dan data yang digunakan dalam pengujian sederhana :

-- Table Structure

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(10) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

-- Table Data

INSERT INTO `user` ( `user` ) VALUES
( char( '8' ) ),
( char( '0' ) ),
( char( '10' ) ),
( char( '13' ) ),
( char( '9' ) ),
( char( '26' ) );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. di mysql, saat hapus kaskade tidak berfungsi

  2. Perbarui tabel MySQL dengan peringkat rekor dalam grup

  3. XAMPP - MySQL mati secara tidak terduga

  4. Bagaimana cara menghapus catatan mysql dengan jquery

  5. Pilihan Pesanan Berdasarkan Hasil Gabung (Urutkan Percakapan pada Pesan Terakhir Terkirim)