防止Java程式中的SQL注入攻擊
P粉328911308
P粉328911308 2023-10-20 20:06:17
0
2
819

我必須在我的 java 程式中新增一條語句來更新資料庫表:

String insert =
    "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";

我聽說這可以透過 SQL 注入來利用,例如:

DROP TABLE customer;

我的程式有一個 Java GUI,所有名稱、地址和電子郵件值均從 Jtextfields 檢索。我想知道黑如何將以下程式碼(DROP TABLE customer;)加入我的插入語句中以及如何防止這種情況。

P粉328911308
P粉328911308

全部回覆(2)
P粉194919082

例如:

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

會將此值插入到插入中:

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

使用準備好的語句和 SQL 參數(來自 Matt Fellows 的「竊取」範例):

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

也要解析此類變數的值,並確保它們不包含任何不允許的字元(例如名稱中的“;”)。

P粉030479054

您需要使用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();

這將防止注入攻擊。

駭客將其放入其中的方式是,如果您插入的字串來自某處的輸入 - 例如網頁上的輸入字段,或者應用程式或類似應用程式中表單上的輸入字段。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板