我必須在我的 java 程式中新增一條語句來更新資料庫表:
String insert = "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
我聽說這可以透過 SQL 注入來利用,例如:
DROP TABLE customer;
我的程式有一個 Java GUI,所有名稱、地址和電子郵件值均從 Jtextfields
檢索。我想知道黑如何將以下程式碼(DROP TABLE customer;
)加入我的插入語句中以及如何防止這種情況。
例如:
會將此值插入到插入中:
使用準備好的語句和 SQL 參數(來自 Matt Fellows 的「竊取」範例):
也要解析此類變數的值,並確保它們不包含任何不允許的字元(例如名稱中的“;”)。
您需要使用PreparedStatement。 例如
這將防止注入攻擊。
駭客將其放入其中的方式是,如果您插入的字串來自某處的輸入 - 例如網頁上的輸入字段,或者應用程式或類似應用程式中表單上的輸入字段。