Mengurangkan Kerentanan Suntikan SQL dalam Aplikasi Java
Untuk melindungi daripada serangan suntikan SQL, yang boleh mengeksploitasi kelemahan dalam pertanyaan pangkalan data, adalah penting untuk menggunakan teknik sanitasi yang betul. Pertimbangkan coretan kod Java berikut:
String insert = "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
Kod ini terdedah kepada serangan suntikan SQL kerana input pengguna (nama, alamat, e-mel) disatukan terus ke dalam pernyataan SQL tanpa pengesahan atau pembersihan. Pelakon yang berniat jahat boleh mengeksploitasi ini dengan menyuntik kod SQL sewenang-wenangnya, seperti:
DROP TABLE customer;
Untuk mengelakkan ini, adalah penting untuk menggunakan PreparedStatement dan bukannya gabungan rentetan SQL langsung. PreparedStatement menyediakan mekanisme selamat untuk melaksanakan pertanyaan berparameter. Berikut ialah contoh:
String insert = "INSERT INTO customer(name,address,email) VALUES(?, ?, ?);"; PreparedStatement ps = connection.prepareStatement(insert); ps.setString(1, name); ps.setString(2, addre); ps.setString(3, email); ResultSet rs = ps.executeQuery();
Kod yang disemak ini menggunakan kaedah setString untuk mengikat input pengguna kepada parameter SQL yang sepadan (diwakili oleh tanda soal dalam rentetan sisipan). Dengan memisahkan pertanyaan SQL daripada input pengguna, ia menjadi kebal terhadap serangan suntikan SQL. Kod hasad yang disuntik oleh penggodam akan dianggap sebagai rentetan literal dalam pernyataan SQL, dengan berkesan menghalang sebarang tindakan berbahaya.
Atas ialah kandungan terperinci Bagaimanakah PreparedStatements Boleh Mencegah Suntikan SQL dalam Aplikasi Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!