緩解Java 應用程式中的SQL 注入漏洞
為了防範可利用資料庫查詢中的漏洞的SQL 注入攻擊,至關重要的是採用適當的消毒技術。考慮以下 Java 程式碼片段:
String insert = "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
此程式碼容易受到 SQL 注入攻擊,因為使用者輸入(姓名、位址、電子郵件)直接連接到 SQL 語句中,而沒有進行驗證或清理。惡意行為者可以透過注入任意 SQL 程式碼來利用此漏洞,例如:
DROP TABLE customer;
為了防止這種情況,必須使用PreparedStatement 而不是直接 SQL 字串連接。 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();
此修改後的程式碼使用 setString 方法將使用者輸入綁定到對應的 SQL 參數(由插入字串中的問號表示)。透過將 SQL 查詢與使用者輸入分離,它就可以免受 SQL 注入攻擊。駭客注入的惡意程式碼將被視為SQL語句中的文字字串,有效防止任何有害操作。
以上是在 Java 應用程式中,PreparedStatement 如何防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!