SQL 注入與動態 SQL
動態查詢是
SET @sql = N'SELECT COUNT(*) FROM AppUsers WHERE Username = ''' + @user + ''' AND Password = ''' + @pass + ''''
EXEC(@sql)
如果使用者變數的值為 myusername’‘OR 1 = 1 - 將執行以下查詢:
SELECT COUNT(*)
FROM AppUsers
WHERE Username = 'myusername' OR 1=1 --' AND Password = ''
變數 @username 的值末尾的註釋將註釋掉查詢的尾隨部分,並且將評估條件 1 = 1。在此查詢返回的至少一個使用者檢查它的應用程式將返回大於 0 的計數,並且登入將成功。
使用此方法即使攻擊者不知道有效的使用者名稱和密碼,也可以登入應用程式。