防止 SQL 注入:在 Java 中轉義字串
防止 SQL 注入的任務需要仔細處理輸入字串。一種方法是修改現有字串以防止特殊字元被利用。具體來說,將現有反斜線() 轉換為、引號(") 轉換為"、撇號(') 轉換為' 以及換行符(n) 轉換為n 可確保字串在MySQL 資料庫查詢評估時變得無害。
雖然replaceAll函數可以實現這種轉換,但由於大量的反斜杠,它的使用可能會變得複雜。為了解決這個問題,另一個更安全的方法是使用PreparedStatements。
PreparedStatements 透過將使用者輸入視為查詢語句中的參數來消除 SQL 注入的可能性。考慮以下 Java 程式碼範例:
public insertUser(String name, String email) { Connection conn = null; PreparedStatement stmt = null; try { conn = setupTheDatabaseConnectionSomehow(); stmt = conn.prepareStatement("INSERT INTO person (name, email) values (?, ?)"); stmt.setString(1, name); stmt.setString(2, email); stmt.executeUpdate(); } finally { try { if (stmt != null) { stmt.close(); } } catch (Exception e) { // log this error } try { if (conn != null) { conn.close(); } } catch (Exception e) { // log this error } } }
無論姓名和電子郵件中包含什麼字符,它們都會安全地插入資料庫,而不會對 INSERT 語句的完整性構成任何威脅。
PreparedStatement 類別提供了針對特定資料類型客製化的各種 set 方法,確保與資料庫欄位定義的相容性。例如,要設定 INTEGER 列,可以使用 setInt 方法。請參閱PreparedStatement 文件以取得可用方法的完整清單。
以上是Java 中的PreparedStatements 如何防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!