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

Apa itu PDO, apa hubungannya dengan injeksi SQL, dan mengapa saya harus menggunakan ini?

PDO - Objek Data PHP adalah lapisan akses basis data yang menyediakan metode akses yang seragam ke banyak basis data.

Ini tidak memperhitungkan sintaks khusus basis data, tetapi dapat memungkinkan proses peralihan basis data dan platform menjadi cukup mudah, cukup dengan mengganti string koneksi dalam banyak kasus.

Pernyataan yang disiapkan/kueri berparameter sudah cukup untuk mencegah injeksi urutan pertama pada pernyataan itu. Jika Anda menggunakan SQL dinamis yang tidak dicentang di tempat lain dalam aplikasi Anda, Anda masih rentan terhadap injeksi urutan kedua.

Injeksi orde kedua berarti data telah didaur ulang melalui database sekali sebelum dimasukkan dalam kueri, dan jauh lebih sulit untuk dilakukan. AFAIK, Anda hampir tidak pernah melihat serangan orde kedua yang sebenarnya, karena biasanya lebih mudah untuk melakukan rekayasa sosial.

PDO sedikit lebih lambat dari mysql _*. Tetapi memiliki portabilitas yang bagus. PDO menyediakan antarmuka tunggal di beberapa database. Itu berarti Anda dapat menggunakan banyak DB tanpa menggunakan mysql_query untuk mysql, mssql_query untuk SQL Server, dll. Cukup gunakan sesuatu seperti $db->query("INSERT INTO...") selalu. Apa pun driver database yang Anda gunakan.

Jadi, untuk proyek yang lebih besar atau portabel, PDO lebih disukai. Bahkan Zend Framework menggunakan PDO.

Injeksi SQL

Injeksi SQL

Injeksi SQL adalah teknik di mana pengguna jahat dapat menyuntikkan perintah SQL ke dalam pernyataan SQL, melalui input halaman web.

Perintah SQL yang disuntikkan dapat mengubah pernyataan SQL dan membahayakan keamanan aplikasi web.

Apakah pernyataan yang disiapkan PDO cukup untuk mencegah injeksi SQL?

Jawaban singkatnya adalah TIDAK, Persiapan PDO tidak akan melindungi Anda dari semua kemungkinan serangan SQL-Injection. Serangan contoh

Bagaimana cara menggunakan PDO?

Contoh:

$stmt = $dbh->prepare("SELECT * FROM tables WHERE names = :name");
$stmt->execute(array(':name' => $name));

Referensi



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menetapkan MySQL sebagai database default di Rails 3?

  2. Waktu eksekusi maksimum di phpMyadmin

  3. MONTHNAME() Contoh – MySQL

  4. hasil gratis pdo

  5. Cara menyisipkan massal di mySql dan node.js menggunakan mysljs