要避免SQL注入攻擊,可以使用PreparedStatement來替代Statement,并使用參數化查詢。PreparedStatement在執行SQL語句時會自動處理特殊字符,從而避免SQL注入。
下面是一個使用PreparedStatement執行更新操作的示例代碼:
String query = "UPDATE users SET name = ? WHERE id = ?";
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, "Alice");
pstmt.setInt(2, 1);
int rowsAffected = pstmt.executeUpdate();
在這個示例中,pstmt.setString(1, "Alice")
和pstmt.setInt(2, 1)
分別設置了查詢中的參數值,這樣可以避免直接拼接字符串造成的SQL注入風險。最后調用executeUpdate()
方法執行更新操作。
除了使用PreparedStatement外,還可以使用ORM框架(如Hibernate)來操作數據庫,ORM框架會自動處理SQL注入問題。在任何情況下,都應該避免直接拼接SQL字符串,而是使用參數化查詢或者ORM框架來執行數據庫操作。