String-Escaping: Pertahanan yang Tidak Mencukupi Terhadap Suntikan SQL
Keselamatan pangkalan data adalah yang terpenting, terutamanya apabila mengendalikan data yang dibekalkan pengguna dalam pertanyaan SQL. Walaupun pertanyaan berparameter adalah standard emas, sesetengah pembangun meneroka kaedah alternatif, selalunya kurang selamat. Satu teknik sedemikian melibatkan melepaskan petikan tunggal dan membungkus input dalam petikan tunggal. Jom kita semak keberkesanannya.
Kaedah: Melarikan Diri Petikan Tunggal
Pendekatan ini menggantikan petikan tunggal (') dalam input pengguna dengan petikan tunggal berganda ('') untuk mengelakkan penamatan rentetan. Keseluruhan rentetan yang diubah suai kemudiannya disertakan dalam petikan tunggal. Andaian ini akan menghalang sebarang aksara berikutnya, seperti koma bertitik atau tanda peratus, daripada dilaksanakan sebagai sebahagian daripada arahan SQL.
Mengapa Kaedah Ini Gagal
Pendekatan ringkas ini jelas terdedah kepada pelbagai serangan suntikan SQL:
--
dalam MySQL) untuk memintas input yang terlepas dan menyuntik kod SQL mereka sendiri.Penyelesaian Selamat: Pertanyaan Berparameter
String escaping ialah kaedah yang tidak boleh dipercayai dan lapuk untuk menghalang suntikan SQL. Banyak kajian penyelidikan telah mengesahkan kelemahannya. Amalan terbaik yang disyorkan kekal menggunakan pertanyaan berparameter (atau pernyataan yang disediakan). Pendekatan ini memisahkan input pengguna daripada kod SQL itu sendiri, menghapuskan sepenuhnya risiko suntikan. Parameterisasi menyediakan pertahanan yang teguh dan berkesan terhadap serangan suntikan SQL.
Atas ialah kandungan terperinci Adakah String-Escaping Membersihkan Suntikan SQL dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!