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

Pernyataan yang disiapkan MySQL PHP PDO - masalah kinerja vs keamanan

Saya pikir ini termasuk dalam kategori "optimasi prematur".

Seberapa signifikan biaya overhead? Sudahkah Anda mengukurnya? Apakah itu mempengaruhi kinerja server Anda sama sekali?

Kemungkinannya tidak.

Di sisi positifnya, Anda memiliki keuntungan yang tak terbantahkan dalam hal keamanan (yang harus menjadi perhatian utama untuk setiap toko berbasis internet).

Pada sisi negatifnya, Anda memiliki risiko bahwa hal itu dapat mempengaruhi kinerja. Di tautan yang Anda berikan, ini menunjukkan bahwa persiapan PDO yang diterapkan dengan buruk menghasilkan kinerja yang sedikit lebih rendah daripada pernyataan yang tidak disiapkan dalam beberapa keadaan. Perbedaan performa pada 5000 run adalah 0,298 detik.

Tidak signifikan. Terlebih lagi ketika Anda menyadari bahwa kueri "tidak disiapkan" dijalankan tanpa rutinitas sanitasi masukan yang diperlukan untuk membuat mereka aman di lingkungan hidup. Jika Anda tidak menggunakan kueri yang disiapkan, Anda memerlukan beberapa bentuk sanitasi input untuk mencegah serangan SQL, dan tergantung pada bagaimana hal itu dilakukan, Anda mungkin perlu memijat kembali set hasil.

Intinya, tidak ada masalah kinerja yang signifikan, tetapi ada manfaat keamanan yang signifikan. Demikian rekomendasi resmi untuk menggunakan pernyataan yang disiapkan.

Dalam pertanyaan Anda, Anda berbicara tentang "eshop umum". "eshop umum" tidak akan pernah memiliki lalu lintas yang cukup untuk mengkhawatirkan masalah kinerja, jika memang ada. Masalah keamanan di ujung lain...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GALAT 2002 (HY000):Tidak dapat terhubung ke server MySQL lokal melalui soket '/tmp/mysql.sock'

  2. grup hitung mysql berdasarkan pesanan dengan optimasi

  3. Cara Memesan Berdasarkan Tanggal di MySQL

  4. Hitung jumlah kemunculan string di bidang VARCHAR?

  5. hapus * dari tabel tidak berfungsi