Saya perlu menambah kenyataan pada program java saya untuk mengemas kini jadual pangkalan data:
String insert = "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
Saya dengar ini boleh dieksploitasi melalui suntikan SQL, contohnya:
DROP TABLE customer;
Program saya mempunyai GUI Java dan semua nama, alamat dan nilai e-mel ditambah daripadaJtextfields
检索。我想知道黑如何将以下代码(DROP TABLE customer;
) pada penyata sisipan saya dan bagaimana saya boleh menghalang perkara ini.
Contohnya:
akan memasukkan nilai ini ke dalammasukkan:
Gunakan pernyataan yang disediakan dan parameter SQL (contoh "mencuri" daripada Matt Fellows):
Juga menghuraikan nilai pembolehubah tersebut dan pastikan ia tidak mengandungi sebarang aksara yang tidak dibenarkan (seperti ";" dalam nama).
Anda perlu menggunakanPreparedStatement. Contohnya
Ini akan menghalang serangan suntikan.
Cara penggodam memasukkannya ialah jika rentetan yang anda masukkan datang daripada input di suatu tempat - seperti medan input pada halaman web atau medan input pada borang dalam apl atau yang serupa.