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

Pencegahan terhadap injeksi MySQL

Gunakan pernyataan yang sudah disiapkan

Apa yang mereka lakukan pertama-tama mengirim versi kueri dengan placeholder untuk data. Kueri diverifikasi dan disiapkan. Jika berhasil, Anda dapat mengirim nilai yang akan dimasukkan database dengan aman ke dalam kueri yang disiapkan.

Ada tiga opsi:

Ekstensi MySQLi

$stmt = $mysli->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                         VALUES 
                         (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');

$stmt->bindParam('issssssssssssss', $_POST['costumer_ID'], ..., $_POST['Credit_CardType']);
$stmt->execute();

Ekstensi PDO

// use native prepared statements if supported
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$stmt = $pdo->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                       VALUES 
                       (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');

$stmt->bindParam(1, $_POST['costumer_ID'], PDO::PARAM_INT);
...
$stmt->bindParam(15, $_POST['Credit_CardType']);

$stmt->execute();

Kueri mentah melalui ekstensi apa pun

Saya tidak akan memberikan contoh karena dua metode lainnya jauh lebih unggul.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengambil Data dengan Jquery, AJAX, dan PHP dari Database MySQL

  2. Apakah MySQL mengabaikan nilai nol pada batasan unik?

  3. MySql KIRI GABUNG dengan COUNT

  4. Bagaimana cara meneruskan []slice ke kondisi IN dalam pernyataan SQL yang disiapkan dengan kondisi non-IN juga?

  5. Menghubungkan ke Database MySQL di .NET