1.**層面
1.對輸入進行嚴格的轉義和過濾。
轉義:對前端傳輸來的資料進行轉義,把一些特殊符號(單引號,雙引號等等)進行轉義。
過濾:不讓輸入一些特殊的內容(比如惡意的**),這是在輸入層面進行的,不推薦(不是最好的方法,該方法是轉義加過濾,黑名單的方法)。因為有時候資料庫公升級,會多一些新的特殊符號,這些又會導致sql漏洞的出現。
最好的方法:
2.使用預處理和引數化(parameterized)
**預處理+引數法:**使用pdo的prepare預處理。
pdo:統一的,各種資料庫的返回介面,通過它提供的函式和方法來運算元據庫。
pdo裡邊不會把引數直接傳進去,它是用引數的方式去寫引數。
與資料庫進行互動:它先不傳引數,而是進行預處理,然後再把引數傳進去,最後你傳入sql中,都只會是乙個整體,所以就不存在語句拼接了。
pdo和資料報預設有兩次互動,乙個是先預處理,然後再傳引數。(徹底避免了,拼接sql這種做法)
2.網路層面
1.通過waf裝置啟用防sql inject注入策略(或類似防護系統)
部署應用防火牆:waf。 即使你的**存在sql注入漏洞,但是攻擊者在使用payload進行滲透時候,這種waf防火牆就會攔截下來,阻斷掉這種惡意的payload。如圖:
我們需要清楚的是,我們不能把希望寄託在後端的開發**,和這種waf類似的防火牆。在真實的防禦過程中這兩個都要同時推進。
2.雲端防護(360**衛士,阿里雲盾等)
現在很多企業的服務都會去過雲端,類似於waf。如圖:
sql 防注入漏洞
一 為了防止sql 注入漏洞,應使用sql引數 以下 當 textbox1.text 是 1 or 1 1 時就會產生 sql 注入漏洞 private void button1 click object sender,eventargs e 修改 使用sql引數可以防止漏洞 private voi...
楓葉防注入程式漏洞
關鍵字 inurl pro show.asp?showid 該程式採用楓葉通用防注入1.0asp版,此防注入完全雞肋,該型別 程式pro show.asp 有cookies注入或者變型注入,注入前可以先判斷一下字段數 order by xx 注入語句 and 1 1 union select 1,u...
楓葉防注入程式漏洞
關鍵字 inurl pro show.asp?showid 該程式採用楓葉通用防注入1.0asp版,此防注入完全雞肋,該型別 程式pro show.asp 有cookies注入或者變型注入,注入前可以先判斷一下字段數 order by xx 注入語句 and 1 1 union select 1,u...