mysql數據庫一直以來都遭受到sql注入攻擊的影響,很多網站,包括目前的PC端以
及手機端都在使用php+mysql數據庫這種架構,大多數網站受到的攻擊都是與sql注入攻擊
有關,那麼mysql數據庫如何防止sql注入呢?下面我們eSafe白帽資安網技術針對於這個sql注入
問題總結3種方案去防止sql注入攻擊。
sql注入產生的原因很簡單,就是訪問用戶通過網站前端對網站可以輸入參數的地方進行
提交參數,參數里插入了一些惡意參數傳入到主機後端裡去,主機後端並沒有對其
進行詳細的安全過濾,導致直接進入到數據庫裡,執行了數據庫的sql語句,sql語句可
以是查詢網站的管理員賬號,密碼,查詢數據庫的地址等等的敏感信息,這個就是sql
注入攻擊。
提交參數,參數里插入了一些惡意參數傳入到主機後端裡去,主機後端並沒有對其
進行詳細的安全過濾,導致直接進入到數據庫裡,執行了數據庫的sql語句,sql語句可
以是查詢網站的管理員賬號,密碼,查詢數據庫的地址等等的敏感信息,這個就是sql
注入攻擊。
我們來看下這個網站的代碼編寫,我們來利用下該如何sql注入攻擊:
web前端網站通過get_id這個值獲取了訪問用戶輸入的參數值,並傳遞給ID這個值上去
,ID這個值沒有對輸入的參數進行安全過濾,導致該值裡的惡意參數傳遞到主機後端
去,緊接著又送到了數據庫,進行了數據庫的sql語句執行。一般都是參數拼接而成的
sql語句,當用戶提交一些逗號之類的and 1=1等等的字符時就會執行sql語句。
,ID這個值沒有對輸入的參數進行安全過濾,導致該值裡的惡意參數傳遞到主機後端
去,緊接著又送到了數據庫,進行了數據庫的sql語句執行。一般都是參數拼接而成的
sql語句,當用戶提交一些逗號之類的and 1=1等等的字符時就會執行sql語句。
目前我們eSafe白帽資安網瞭解到的sql注入漏洞分5種,第一個就是數據庫聯合查詢注入攻擊,
第二種就是數據庫報錯查詢注入攻擊,第三種就是字符型數據庫注入攻擊,第四種是數
據庫盲注sql注入攻擊,第五種是字符型注入攻擊。我們來簡單的介紹下著幾種攻擊的
特徵以及利用方式,才能更好的瞭解sql注入,瞭解後才能更好的去防止sql注入攻擊。
第二種就是數據庫報錯查詢注入攻擊,第三種就是字符型數據庫注入攻擊,第四種是數
據庫盲注sql注入攻擊,第五種是字符型注入攻擊。我們來簡單的介紹下著幾種攻擊的
特徵以及利用方式,才能更好的瞭解sql注入,瞭解後才能更好的去防止sql注入攻擊。
mysql 聯合查詢數據庫注入攻擊是採用的union語句,以及使用select語句進行的查詢,
去除一些查詢語句的重複行進行sql注入的攻擊。數據庫報錯查詢注入攻擊是採用的數
據庫報錯類型,判斷數據庫的錯誤點,可以使用order by來查詢報錯,或者使用floor()
來進行報錯查詢,floor報錯的原理就是採用的group bu與rand函數同時進行使用的時
候,計算多次出現的錯誤導致。
去除一些查詢語句的重複行進行sql注入的攻擊。數據庫報錯查詢注入攻擊是採用的數
據庫報錯類型,判斷數據庫的錯誤點,可以使用order by來查詢報錯,或者使用floor()
來進行報錯查詢,floor報錯的原理就是採用的group bu與rand函數同時進行使用的時
候,計算多次出現的錯誤導致。
字符型sql注入,是判斷數據庫的數據是字符型還是數字型,最簡單的一個方法就是使
用單引號去安全測試,單引號閉合就是字符型的sql注入。數字型就很簡單了,通過輸
入數字值對其判斷,and 1=1 \and 1=2來觀察返回來的網站結果是不是正常的就知道了。
用單引號去安全測試,單引號閉合就是字符型的sql注入。數字型就很簡單了,通過輸
入數字值對其判斷,and 1=1 \and 1=2來觀察返回來的網站結果是不是正常的就知道了。
那麼mysql該如何防止sql注入?我們通過以下三種方法進行防治sql注入
1.開啟php的魔術模式,,magic_quotes_gpc = on即可,當一些特殊字符出現在網站前
端的時候,就會自動進行轉化,轉化成一些其他符號導致sql語句無法執行。
端的時候,就會自動進行轉化,轉化成一些其他符號導致sql語句無法執行。
2.網站代碼裡寫入過濾sql特殊字符的代碼,對一些特殊字符進行轉化,比如單引號,
逗號,*,(括號)AND 1=1 、反斜槓,select union等查詢的sql語句都進行安全過濾
,限制這些字符的輸入,禁止提交到後端中去。
逗號,*,(括號)AND 1=1 、反斜槓,select union等查詢的sql語句都進行安全過濾
,限制這些字符的輸入,禁止提交到後端中去。
3.開啟網站防火牆,IIS防火牆,apache防火牆,nginx防火牆,都有內置的過濾sql注
入的參數,當用戶輸入參數get、post、cookies方式提交過來的都會提前檢測攔截。
入的參數,當用戶輸入參數get、post、cookies方式提交過來的都會提前檢測攔截。