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

Bagaimana cara kerja injeksi SQL dan bagaimana cara melindunginya?

Injeksi SQL adalah kueri SQL yang dibentuk dengan jahat yang digunakan untuk "membingungkan" database SQL agar memberikan sesuatu yang tidak seharusnya. Misalnya, pertimbangkan kueri berikut

"SELECT * FROM `users` WHERE `username` = '$name'";

Dalam kasus normal, ini akan berhasil. Jika kami mengirimkan 'Jack' ke ini, itu akan mengembalikan semua pengguna bernama Jack. Namun, jika pengguna masuk, katakan "' OR 1=1", kueri yang dihasilkan adalah

"SELECT * FROM `users` WHERE `username` = '' OR 1=1";

Karena 1 selalu sama dengan 1, dan klausa kombinasinya adalah OR, ini akan mengembalikan nilai true pada setiap baris, yang pada gilirannya akan menampilkan SETIAP baris kepada pengguna jahat. Dengan menggunakan teknik ini, seseorang dapat melihat seluruh database Anda. Juga pertimbangkan jika seseorang mengirimkan sesuatu seperti "'; DROP TABLE users ";--, yang menghasilkan

"SELECT * FROM `users` WHERE `username` = ''; DROP TABLE `users`";--";

Yang merupakan dua kueri, yang satu tidak akan melakukan apa-apa, yang kedua akan menghapus SELURUH database pengguna, yang mengakibatkan hilangnya data Anda.

Metode terbaik untuk mencegah injeksi SQL adalah dengan menggunakan pernyataan yang telah disiapkan. Dengan ini, Anda mengirim kueri ke database SQL yang mengatakan sesuatu seperti

"SELECT * FROM `users` WHERE `username` = '?'";

Ini memungkinkan database mengetahui format kueri (WHERE username sama dengan beberapa nilai), sehingga tidak ada kebingungan saat diberikan kueri teks biasa. Kemudian database tahu untuk mengharapkan satu nilai, dan di mana meletakkannya. Kemudian Anda meneruskan nilai itu ke database yang dapat digunakan untuk mencari. Ini juga lebih baik karena database dapat mengoptimalkan kueri untuk pencarian yang lebih cepat.

Bacalah pernyataan yang telah disiapkan, yang akan menjelaskan hal ini secara lebih rinci.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menjalankan prosedur tersimpan dengan kursor di PHP

  2. Cara menjalankan 2 kueri pembaruan dalam satu transaksi dengan JDBC

  3. SQL - jumlah beberapa baris, dikurangi jumlah baris lainnya

  4. MySql Transpose Baris ke Kolom dan Kolom ke Baris

  5. TAMPILKAN TABEL pernyataan dengan beberapa nilai LIKE