Mencegah serangan suntikan SQL dalam program Java
P粉328911308
P粉328911308 2023-10-20 20:06:17
0
2
840

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 daripada Jtextfields 检索。我想知道黑如何将以下代码(DROP TABLE customer;) pada penyata sisipan saya dan bagaimana saya boleh menghalang perkara ini.

P粉328911308
P粉328911308

membalas semua(2)
P粉194919082

Contohnya:

name = "'); DROP TABLE customer; --"

akan memasukkan nilai ini ke dalam masukkan :

INSERT INTO customer(name,address,email)     VALUES(''); DROP TABLE customer; --"','"+addre+"','"+email+"');

Gunakan pernyataan yang disediakan dan parameter SQL (contoh "mencuri" daripada Matt Fellows):

String insert = "INSERT INTO customer(name,address,email) VALUES(?, ?, ?);";
PreparedStament ps = connection.prepareStatment(insert);

Juga menghuraikan nilai pembolehubah tersebut dan pastikan ia tidak mengandungi sebarang aksara yang tidak dibenarkan (seperti ";" dalam nama).

P粉030479054

Anda perlu menggunakan PreparedStatement. Contohnya

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();

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan