首頁 > 資料庫 > mysql教程 > PreparedStatement 如何保護 Java 應用程式免受 SQL 注入攻擊?

PreparedStatement 如何保護 Java 應用程式免受 SQL 注入攻擊?

Patricia Arquette
發布: 2025-01-06 08:25:44
原創
964 人瀏覽過

How Can PreparedStatements Protect Java Applications from SQL Injection Attacks?

Java 程式中的 SQL 注入預防

在與資料庫互動的 Java 程式中,預防 SQL 注入攻擊至關重要。當不受信任的輸入插入 SQL 查詢時,就會發生 SQL 注入攻擊,攻擊者可以執行惡意程式碼或操縱資料。

考慮以下將資料插入資料庫表的 Java 程式碼:

String insert =
    "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
登入後複製

此程式碼容易受到 SQL 注入攻擊,因為這些值直接插入到查詢中。例如,攻擊者可以輸入以下字串作為名稱:

DROP TABLE customer;
登入後複製

這將導致整個客戶表被刪除。

要防止這種攻擊,請使用PreparedStatement。 PreparedStatement 物件使用佔位符作為查詢參數,然後再填入這些佔位符。這種分離可以防止不受信任的輸入直接插值到查詢中。

以下程式碼示範了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();
登入後複製

此程式碼可以防止 SQL 注入,因為值是單獨設定的從查詢中。攻擊者無法再透過插入惡意輸入來改變查詢的意圖。

以上是PreparedStatement 如何保護 Java 應用程式免受 SQL 注入攻擊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板