共計 1193 個字符,預計需要花費 3 分鐘才能閱讀完成。
Java 防止 SQL 注入的方式有以下幾種:
- 使用參數化查詢(Prepared Statement):使用 PreparedStatement 接口來執行 SQL 語句,通過將參數與 SQL 語句分開,使得 SQL 注入攻擊無法成功。
示例代碼:
String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, username);
statement.setString(2, password);
ResultSet resultSet = statement.executeQuery();
- 使用存儲過程(Stored Procedure):將 SQL 語句封裝在存儲過程中,使用存儲過程來執行 SQL 語句,這樣可以避免直接執行 SQL 語句導致的注入風險。
示例代碼:
String sql = "{CALL authenticateUser(?, ?)}";
CallableStatement statement = connection.prepareCall(sql);
statement.setString(1, username);
statement.setString(2, password);
ResultSet resultSet = statement.executeQuery();
- 輸入驗證和過濾:對輸入的數據進行驗證和過濾,確保只有合法的數據才能進入 數據庫,例如使用正則表達式對輸入數據進行驗證。
示例代碼:
String username = request.getParameter("username");
String password = request.getParameter("password");
// 驗證和過濾輸入數據
if (username.matches("[a-zA-Z0-9]+")) {
// 執行 SQL 查詢
String sql = "SELECT * FROM users WHERE username ='" + username + "'AND password ='" + password + "'";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
}
- 使用框架或 ORM 工具:使用流行的 Java 框架(如 Spring、Hibernate 等)或 ORM 工具(如 MyBatis、JPA 等),這些框架和工具通常會自動對 SQL 語句進行參數化處理,避免了手動處理的繁瑣工作。
總體來說,最好的方式是使用參數化查詢,因為它能夠最大程度地防止 SQL 注入攻擊。而其他方式則是在某些場景下的替代方案。
丸趣 TV 網 – 提供最優質的資源集合!
正文完