sql注入
SQL注入的產(chǎn)生過(guò)程
- 轉(zhuǎn)義字符處理不當(dāng)
- 類(lèi)型處理不當(dāng)
- 查詢集處理不當(dāng)
- 錯(cuò)誤處理不當(dāng)
- 多個(gè)提交處理不當(dāng)(使用“白名單”而非“黑名單”)
- 不安全的數(shù)據(jù)庫(kù)配置
不要信任用戶輸入的任何數(shù)據(jù)
*元數(shù)據(jù):數(shù)據(jù)庫(kù)內(nèi)部包含的數(shù)據(jù),例如MYSQL中的INFORMATION_SCHEMA
*
無(wú)法隱藏或取消對(duì)MYSQL數(shù)據(jù)庫(kù)中
INFORMATION_SCHEMA
虛擬數(shù)據(jù)庫(kù)的訪問(wèn)
- 基本的數(shù)據(jù)庫(kù)驅(qū)動(dòng)的web應(yīng)用通常包含三層:表示層(瀏覽器)腾务,邏輯層(編程語(yǔ)言)毕骡,存儲(chǔ)層(數(shù)據(jù)庫(kù))
尋找SQL注入
唯一規(guī)則:發(fā)送意外數(shù)據(jù)以觸發(fā)異常
- 識(shí)別WEB應(yīng)用中所有的數(shù)據(jù)輸入
- 了解哪些類(lèi)型請(qǐng)求會(huì)觸發(fā)異常
- 檢測(cè)服務(wù)器響應(yīng)中的異常
識(shí)別數(shù)據(jù)輸入
-
GET請(qǐng)求
特點(diǎn):信息顯示在URL中,對(duì)用戶透明岩瘦,長(zhǎng)度有限制 -
POST請(qǐng)求
特點(diǎn):長(zhǎng)度幾乎無(wú)限制未巫,表單提交一般通過(guò)POST提交,不顯示在URL中
一般启昧,有兩個(gè)原因可以導(dǎo)致SQL注入:
- 缺少用戶輸入驗(yàn)證
- 數(shù)據(jù)和控制結(jié)構(gòu)混合在同一通道中
數(shù)據(jù)庫(kù)錯(cuò)誤
常見(jiàn)幾種對(duì)數(shù)據(jù)庫(kù)錯(cuò)誤的處理方法:
1.將錯(cuò)誤顯示在頁(yè)面上(極其危險(xiǎn))
2.隱藏在web頁(yè)碼的源代碼中以便于調(diào)試(開(kāi)發(fā)環(huán)境中適用)
3.跳轉(zhuǎn)至另一個(gè)頁(yè)面
4.返回HTTP錯(cuò)誤代碼500(內(nèi)部服務(wù)器錯(cuò)誤)或HTTP重定向代碼(502)
5.適當(dāng)處理錯(cuò)誤但是不顯示結(jié)果叙凡,可能會(huì)顯示一個(gè)通用的錯(cuò)誤頁(yè)面