SQL注入:究竟什么時候會用到SQL呢?回答是訪問數據庫的時候。也就是說SQL注入-->直接威脅到了數據源,呵呵。數據庫都收到了威脅,站點還能正常現實么?
所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串。終於達到欺騙server運行惡意的SQL命令。
詳細來說,它是利用現有應用程序,將(惡意)的SQL命令注入到后台數據庫引擎運行的能力,它能夠通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的站點上的數據庫。而不是依照設計者意圖去運行SQL語句。
[1] 比方先前的非常多影視站點泄露VIP會員password大多就是通過WEB表單遞交查詢字符暴出的,這類表單特別easy受到SQL注入式攻擊.
依據相關技術原理,SQL注入能夠分為平台層注入和代碼層注入。
前者由不安全的數據庫配置或數據庫平台的漏洞所致;后者主要是因為程序猿對輸入未進行仔細地過濾,從而運行了非法的數據查詢。基於此,SQL注入的產生原因通常表如今下面幾方面:①不當的類型處理;②不安全的數據庫配置。③不合理的查詢集處理;④不當的錯誤處理;⑤轉義字符處理不合適;⑥多個提交處理不當。
注入方法:
1.猜表名。列名等
先猜表名
And (Select count(*) from 表名)<>0
猜列名
And (Select count(列名) from 表名)<>0
或者也能夠這樣
and exists (select * from 表名)
and exists (select 列名 from 表名)
返回正確的,那么寫的表名或列名就是正確
2.后台身份驗證繞過漏洞
驗證繞過漏洞就是'or'='or'后台繞過漏洞,利用的就是AND和OR的運算規則,從而造成后台腳本邏輯性錯誤
比如管理員的賬號password都是admin。那么再比方后台的數據庫查詢語句是
user=request("user")
passwd=request("passwd")
sql='select admin from adminbate where user='&'''&user&'''&' and passwd='&'''&passwd&'''
那么我使用'or 'a'='a來做usernamepassword的話,那么查詢就變成了
select admin from adminbate where user=''or 'a'='a' and passwd=''or 'a'='a'
這種話,依據運算規則。這里一共同擁有4個查詢語句,那么查詢結果就是 假or真and假or真,先算and 再算or,終於結果為真 。這樣就能夠進到后台了
怎樣預防 呢?歸納一下,主要有下面幾點: