SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入欄位或頁面請求的查詢字串,欺騙伺服器執行惡意的SQL命令。在某些表單中,使用者輸入的內容直接用來構造(或者影響)動態SQL命令,或作為預存程序的輸入參數,這類表單特別容易受到SQL注入式攻擊。
這是百度百科的解釋,怎麼樣,暈了沒有?不過沒有關係,我試試看,能不能把大家講醒了.
顧名思義:SQL注入式攻擊,肯定是SQL語句的事了.所以,先來看一個SQL語句:
Select *from Tabel1 Where User_Name='" & txtUser_Name.text &"'
這是一句大家經常用到的SQL語句,可能有人會想,這麼簡單的一句話,會有什麼問題呢?不要著急,且聽我細細說來.
你的本意是想讓某些具有相應許可權的人操作程式,他們都會知道登入的使用者名稱,藉此驗證.可是,你有沒有想過,如果我在txtUser_Name輸入框中輸入 "
" &" ' or'" & "1=1"
看,原本的SQL語句:
Select *from Tabel1 Where User_Name='" & txtUser_Name.text &"'
現在變成了:
Select *from Tabel1 Where User_Name='" & " " &" ' or '" &"1=1" &"'
這時,相信明眼人都看出來了,後部分的或命題:
or 1=1 是必然成立的,所以,登入程式成功了!
沒錯,這就是SQL注入式攻擊了.攻擊者嘗試輸入某些特殊的SQL字串篡改查詢改變其原來的功能,欺騙系統授予存取權限。
說到這裡,大家有沒有中豁然開朗的感覺---原來,駭客,就是這樣練成的…
那麼,既然SQL注入有這麼大的危害,我們該如何防止SQL注入呢?
簡單的介紹這幾種方法,使用者可自行選擇.
1.永遠不要信任使用者的輸入。對使用者的輸入進行校正,可以通過Regex,或限制長度;對單引號和雙"-"進行轉換等。
2.永遠不要使用動態拼裝sql,可以使用參數化的sql或者直接使用預存程序進行資料查詢存取。
3.永遠不要使用管理員權限的資料庫連接,為每個應用使用單獨的許可權有限的資料庫連接。
4.不要把機密資訊直接存放,加密或者hash掉密碼和敏感的資訊。
5.應用的異常資訊應該給出儘可能少的提示,最好使用自訂的錯誤資訊對原始錯誤資訊進行封裝
6.sql注入的檢測方法一般採取輔助軟體或網站平台來檢測,軟體一般採用sql注入偵查工具jsky,網站平台就有億思網站安全平台偵查工具。MDCSOFT
SCAN等。採用MDCSOFT-IPS可以有效防禦SQL注入,XSS攻擊等.
直面--SQL注入式攻擊,讓你的程式更安全,讓使用者使用的更放心!