Untuk menangani kebimbangan keselamatan dalam mengemas kini jadual pangkalan data dengan input pengguna yang tidak dipercayai, kita perlu menghalang Serangan suntikan SQL. Suntikan SQL berlaku apabila kod hasad dibenamkan dalam data yang dibekalkan pengguna dan dilaksanakan sebagai sebahagian daripada pertanyaan SQL.
Dalam coretan kod yang diberikan:
String insert = "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
Nama nilai, alamat dan e-mel datang daripada input pengguna. Penyerang boleh mengeksploitasi perkara ini dengan memasukkan kod hasad, seperti pelanggan DROP TABLE;, dalam nilai ini.
Untuk mengelakkan suntikan SQL , adalah penting untuk menggunakan kelas PreparedStatement Java. Kelas ini memisahkan pembinaan pertanyaan daripada tetapan parameter, menghalang kod hasad daripada dimasukkan secara langsung dalam pertanyaan.
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();
Dengan menggunakan PreparedStatement, nilai yang dibekalkan pengguna ditetapkan sebagai parameter dan bukannya dilampirkan pada rentetan pertanyaan . Dengan cara ini, ia dianggap sebagai data dan tidak boleh dilaksanakan sebagai kod hasad.
Dalam konteks GUI Java di mana input pengguna datang daripada JTextFields, prinsip yang sama terpakai. Nilai yang dimasukkan dalam medan ini hendaklah dihantar kepada parameter PreparedStatement untuk pelaksanaan yang selamat.
Dengan melaksanakan amalan ini, anda boleh mengurangkan serangan suntikan SQL dengan berkesan dan memastikan keselamatan aplikasi anda.
Atas ialah kandungan terperinci Bagaimanakah PreparedStatements dalam Java Dapat Menghalang Kerentanan Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!