首頁 >資料庫 >mysql教程 >在 Java 應用程式中,PreparedStatement 如何防止 SQL 注入?

在 Java 應用程式中,PreparedStatement 如何防止 SQL 注入?

Patricia Arquette
Patricia Arquette原創
2025-01-06 08:24:39646瀏覽

How Can PreparedStatements Prevent SQL Injection in Java Applications?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn