1 .什么是sql注入(Sql injection)?
Sql注入是一種將sql代碼添加到輸入?yún)?shù)中,傳遞到Sql服務(wù)器解析并執(zhí)行的一種攻擊手法
2. 怎么產(chǎn)生的?
Web開發(fā)人員無法保證所有的輸入都已經(jīng)過濾
攻擊者利用發(fā)送給Sql服務(wù)器的輸入數(shù)據(jù)構(gòu)造可執(zhí)行的Sql代碼
數(shù)據(jù)庫(kù)未做相應(yīng)的安全配置
3.如何尋找sql漏洞?
識(shí)別web應(yīng)用中所有輸入點(diǎn)
了解哪些類型的請(qǐng)求會(huì)觸發(fā)異常?(特殊字符”或')
檢測(cè)服務(wù)器響應(yīng)中的異常
4. 如何進(jìn)行SQL注入攻擊?
數(shù)字注入:
Select * from tablename where id=1 or 1=1;
字符串注入:
Mysql的注釋特性:
![](/d/20211018/fc351cc754ee3d1fcad1189494dd2e10.gif)
#與--號(hào)后面的被注釋掉,無論密碼輸入的是什么,都能正確查詢。請(qǐng)點(diǎn)擊此處輸入圖片描述
5. 如何預(yù)防sql注入?
嚴(yán)格檢查輸入格式:is_numeric(var),tp5的validate驗(yàn)證,字符串的注入采用正則看是否在[A-Za-z]之間
轉(zhuǎn)義:addslashes(str)、
mysqli_escape_string()函數(shù)進(jìn)行轉(zhuǎn)義
6.MySQLi的預(yù)編譯機(jī)制
![](/d/20211018/2e6d2715943cb479c01e573472697fc5.gif)
參數(shù)化綁定
參數(shù)化綁定,防止 SQL 注入的又一道屏障。php MySQLi 和 PDO 均提供這樣的功能。比如 MySQLi 可以這樣去查詢:
![](/d/20211018/66e4c81f06ba4f6b15292f0586ef0c8f.gif)
PDO 的更是方便,比如:
![](/d/20211018/7db83477bb462198cd03db7271ae8c00.gif)
您可能感興趣的文章:- Java面試題解析之判斷以及防止SQL注入
- SQL注入原理與解決方法代碼示例
- 通過ibatis解決sql注入問題
- Win2003服務(wù)器防SQL注入神器--D盾_IIS防火墻
- Sql注入工具_(dá)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- Sql注入原理簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- 尋找sql注入的網(wǎng)站的方法(必看)
- 分享一個(gè)簡(jiǎn)單的sql注入
- Mybatis防止sql注入的實(shí)例
- Hibernate使用中防止SQL注入的幾種方案
- 有效防止SQL注入的5種方法總結(jié)
- 關(guān)于SQL注入中文件讀寫的方法總結(jié)