SQL注入是防止數據庫攻擊的一個有效策略。攻擊者將注入一個SQL語句到另外一個語句中,這個通常會損壞你的數據庫。有數據庫接口的Web站點通常在SQL注入的時候容易受到攻擊,因為它們是基于動態的SQL;下面是一個簡單的例子:
在一個ASP頁面中會請求用戶輸入名字和密碼,然后將下面的字符串發送到數據庫中:
SELECT FROM users WHERE username =
’whatever’ AND password = ’mypassword’
這看起來很安全,實際上不是,一個用戶可能會這樣輸入他的名字:
’ OR 1>0 –
當把這個輸入到SQL語句中的時候,結果可能會象這樣:
SELECT FROM users WHERE username
= ’’ OR 1>0 -- AND password = ’’
這個注入語言將通過語句暴露密碼。這將導致所有的用戶名都會在用戶列表中,所以,任何用戶都可以進入到你的系統中。
最簡單阻止注入分類是分析SQL串并移動語句之前的任何“--”的發生。
同時,你要小心注入的時候含有分號,因為分號是給SQL語句分界。如果一個用戶的名字是下面這個:
’ OR 1>0 ; DELETE Customers ; --
如果一個用戶懷有惡意,那么他可以使用多種方法看穿你的系統,但是,最簡單的方法就是避免動態的SQL,用存儲過程來代替。使用SQL來遍歷參數,注入上面所提到的將會產生進程錯誤,并且存儲進程將不會被執行。
文章來源于領測軟件測試網 http://www.kjueaiud.com/