1.pdo預處理是首選。
你可以把他看成是要執行的sql的已經編譯過的模板,它可以用變數引數進行定製
它有兩個顯著優點:
1.1:查詢僅需解析一次,但可以用相同或者不同引數執行多次。換句話說如果要以不同的引數執行同樣的語句執行多次,利用pdo可以大大降低應用程式的速度。
1.2:提供給預處理的語句不需要攜帶引號,所以可以有效防止sql的注入。但是如果查詢的其他部分是由未轉義的輸入來構建的,則仍存在sql注入的風險。
1.3:另外pdo預處理無效的地方:
1.3.1:limit語句
1.3.2 : like %?%. 不能這麼使用,佔位符必須代表整個字元。所以可以這樣 like ?,然後傳入引數為這樣的格式:%iloveyou%;
2.在處理引數之前先decode兩次。防止url編碼注入。
為什麼這麼做呢?我暫時也不太理解,這個部落格上有相關說明。特此向博主致敬!牛人,總結的真好。
下面是我自己寫的乙個sql過濾正則替換函式,在多次漏洞盒子報告錯誤後,我利用它做了成功的sql注入防禦:
public function removesql($keyword)
做了這些處理就能抵禦大部分的sql注入了。具體更多的看這篇博文:
防止SQL注入的幾個途徑
sql注入攻擊的總體思路 發現sql注入位置 判斷伺服器型別和後台資料庫型別 確定可執 況 對於有些攻擊者而言,一般會採取sql注入法。下面我也談一下自己關於sql注入法的感悟。注入法 從理論上說,認證網頁中會有型如 select from admin where username and pass...
幾個知識點
1 記憶體對齊 2 mvc與ssh框架對應關係 3 面試相關 4 非c 內建型別a和b,在哪幾種情況下b能隱式轉化為a?case 4 賦值操作,雖不是正宗的隱式型別轉換,但也可以勉強算乙個 5 extern c 的慣用法 1 在c 中引用c語言中的函式和變數,在包含c語言標頭檔案 假設為cexamp...
sql注入原理 mysql相關知識點
sql就是經常說的資料庫,而sql注入就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。sql注入是比較常見的網路攻擊方式之一,它不是利用作業系統的bug來實現攻擊,而是針對程式設計師編寫時的疏忽,通過sql語句,實現無賬號登入,甚至...