Pencegahan Suntikan SQL dalam Program Java
Mencegah serangan suntikan SQL adalah penting dalam program Java yang berinteraksi dengan pangkalan data. Serangan suntikan SQL berlaku apabila input yang tidak dipercayai dimasukkan ke dalam pertanyaan SQL, membenarkan penyerang melaksanakan kod hasad atau memanipulasi data.
Pertimbangkan kod Java berikut yang memasukkan data ke dalam jadual pangkalan data:
String insert = "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
Kod ini terdedah kepada serangan suntikan SQL kerana nilainya diinterpolasi secara langsung ke dalam pertanyaan. Contohnya, penyerang boleh memasukkan rentetan berikut sebagai nama:
DROP TABLE customer;
Ini akan menyebabkan keseluruhan jadual pelanggan dipadamkan.
Untuk mengelakkan serangan ini, gunakan PreparedStatement. Objek PreparedStatement menggunakan ruang letak untuk parameter pertanyaan, yang kemudiannya diisi kemudian. Pemisahan ini menghalang input yang tidak dipercayai daripada diinterpolasi terus ke dalam pertanyaan.
Kod berikut menunjukkan penggunaan PreparedStatement:
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 ini dilindungi daripada suntikan SQL kerana nilai ditetapkan secara berasingan daripada pertanyaan. Penyerang tidak lagi boleh mengubah niat pertanyaan dengan memasukkan input berniat jahat.
Atas ialah kandungan terperinci Bagaimanakah PreparedStatements Boleh Melindungi Aplikasi Java daripada Serangan Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!