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中文網其他相關文章!