我們正在嘗試更新我們的經典asp搜索引擎,以防止SQL注入。我們有一個VB 6函數,它通過基於各種搜索參數連接查詢來動態構建查詢。我們已經將這個轉換爲一個存儲過程,對於除關鍵字以外的所有參數都使用動態sql。動態SQL - 搜索查詢 - 變量關鍵字數
關鍵字的問題在於,用戶提供了可變數字詞,我們希望爲每個關鍵字搜索多個列。由於我們無法爲每個關鍵字創建單獨的參數,因此我們如何才能構建安全的查詢?
例子:
@CustomerId AS INT
@Keywords AS NVARCHAR(MAX)
@sql = 'SELECT event_name FROM calendar WHERE customer_id = @CustomerId '
--(loop through each keyword passed in and concatenate)
@sql = @sql + 'AND (event_name LIKE ''%' + @Keywords + '%'' OR event_details LIKE ''%' + @Keywords + '%'')'
EXEC sp_executesql @sql N'@CustomerId INT, @CustomerId = @CustomerId
什麼是從SQL注入對此進行處理並維持保護的最佳方式?
+1這種做法將避免逃避問題完全 – 2008-09-30 22:36:10