帶註解的INSERT 語句上的SQL 注入
開發Web 應用程式時,防止SQL 注入至關重要,即使是像這樣的所謂安全操作包含使用者輸入的INSERT 語句。
在此特定場景中,調查 Web 表單包含文字方塊對於註解來說,如果註解輸入處理不安全,確實會發生 SQL 注入。假設使用者提交以下惡意評論:
'); DELETE FROM users; --
如果用於插入此評論的SQL 語句是天真的構造的,則可能會導致未經授權刪除所有使用者記錄:
INSERT INTO COMMENTS VALUES(123, '"); DELETE FROM users; -- ');
為了防止此類攻擊,必須使用參數化SQL 語句,該語句不會將使用者輸入連接到查詢字串中。在 .NET 2.0 中,您可以使用帶有參數的 SqlCommand 類別。例如:
string comment = "..."; // User input int id = 123; string sql = "INSERT INTO COMMENTS (ID, Comment) VALUES (@id, @comment)"; SqlCommand command = new SqlCommand(sql, connection); command.Parameters.AddWithValue("@id", id); command.Parameters.AddWithValue("@comment", comment); command.ExecuteNonQuery();
透過使用參數化 SQL 語句,您可以保持良好的編碼實踐,防止 SQL 注入,並防止在您的調查網頁上進行未經授權的資料操作。
以上是即使有使用者註釋,INSERT 語句中如何也會發生 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!