天天看點

mysql防止網站被sql注入攻擊 的3種方法

mysql資料庫一直以來都遭受到sql注入攻擊的影響,很多網站,包括目前的PC端以及手機端都在使用php+mysql資料庫這種架構,大多數網站受到的攻擊都是與sql注入攻擊有關,那麼mysql資料庫如何防止sql注入呢?下面我們SINE安全技術針對于這個sql注入問題總結3種方案去防止sql注入攻擊。

mysql防止網站被sql注入攻擊 的3種方法

sql注入産生的原因很簡單,就是通路使用者通過網站前端對網站可以輸入參數的地方進行送出參數,參數裡插入了一些惡意參數傳入到伺服器後端裡去,伺服器後端并沒有對其進行詳細的安全過濾,導緻直接進入到資料庫裡,執行了資料庫的sql語句,sql語句可以是查詢網站的管理者賬号,密碼,查詢資料庫的位址等等的敏感資訊,這個就是sql注入攻擊。

我們來看下這個網站的代碼編寫,我們來利用下該如何sql注入攻擊:

mysql防止網站被sql注入攻擊 的3種方法

web前端網站通過get_id這個值擷取了通路使用者輸入的參數值,并傳遞給ID這個值上去,ID這個值沒有對輸入的參數進行安全過濾,導緻該值裡的惡意參數傳遞到伺服器後端去,緊接着又送到了資料庫,進行了資料庫的sql語句執行。一般都是參數拼接而成的sql語句,當使用者送出一些逗号之類的and 1=1等等的字元時就會執行sql語句。

目前我們SINE安全了解到的sql注入漏洞分5種,第一個就是資料庫聯合查詢注入攻擊,第二種就是資料庫報錯查詢注入攻擊,第三種就是字元型資料庫注入攻擊,第四種是資料庫盲注sql注入攻擊,第五種是字元型注入攻擊。我們來簡單的介紹下着幾種攻擊的特征以及利用方式,才能更好的了解sql注入,了解後才能更好的去防止sql注入攻擊。

mysql 聯合查詢資料庫注入攻擊是采用的union語句,以及使用select語句進行的查詢,去除一些查詢語句的重複行進行sql注入的攻擊。資料庫報錯查詢注入攻擊是采用的資料庫報錯類型,判斷資料庫的錯誤點,可以使用order by來查詢報錯,或者使用floor()來進行報錯查詢,floor報錯的原理就是采用的group bu與rand函數同時進行使用的時候,計算多次出現的錯誤導緻。

mysql防止網站被sql注入攻擊 的3種方法

字元型sql注入,是判斷資料庫的資料是字元型還是數字型,最簡單的一個方法就是使用單引号去安全測試,單引号閉合就是字元型的sql注入。數字型就很簡單了,通過輸入數字值對其判斷,and 1=1 \and 1=2來觀察傳回來的網站結果是不是正常的就知道了。

那麼mysql該如何防止sql注入?我們通過以下三種方法進行防治sql注入

1.開啟php的魔術模式,,magic_quotes_gpc = on即可,當一些特殊字元出現在網站前端的時候,就會自動進行轉化,轉化成一些其他符号導緻sql語句無法執行。

2.網站代碼裡寫入過濾sql特殊字元的代碼,對一些特殊字元進行轉化,比如單引号,逗号,*,(括号)AND 1=1 、反斜杠,select union等查詢的sql語句都進行安全過濾,限制這些字元的輸入,禁止送出到後端中去。

3.開啟網站防火牆,IIS防火牆,apache防火牆,nginx防火牆,都有内置的過濾sql注入的參數,當使用者輸入參數get、post、cookies方式送出過來的都會提前檢測攔截,也可以向國内專業做網站安全的公司去咨詢。