您好,登錄后才能下訂單哦!
本文主要給大家介紹MySQL數據庫的安全講義,希望可以給大家補充和更新些知識,如有其它問題需要了解的可以持續在億速云行業資訊里面關注我的更新文章的。
其實數據庫安全就那點事,SQL注入。現代Web數據安全方面,相當一部分公司其實并不重視數據安全的問題,據國外統計超過一半的網站可能存在SQL注入漏洞。
就說最近的例子,2016年11月30日某某著名公司發送短信邀請本人參加云產品峰會,收到邀請的二維碼短信的url,這個url的IP地址就是管理后臺就不說了(大家應該知道是誰了,看完本文***他人網站的,自負責任)。在用戶名輸入框中直接輸入 or 1=1 ,連密碼都不需要輸入,超級管理員驗證通過,直達管理員后臺。
話說,SQL注入漏洞這個事,能怪誰呢?
能怪整天整宿忙碌于擦屁屁的運維嗎?能怪搞數據庫的DBA嗎?
嚴格地說,他們都有責任搞好安全這點事。不過,說到本質,還真與他們沒有什么關系。
有時候,程序在輸入框做好可疑字符過濾,甚至就多加一點邏輯判斷,安全就能完全避免的事。但是他們為什么就不做這個檢查呢,是人安全意識問題,還是對SQL注入不了解呢?
SQL注入漏洞的本質原因并不是在運維工作層面有多大的疏忽,而是程序員沒有做好過濾和邏輯上的問題。為什么?
我們先要明確SQL漏洞***是怎么定義?SQL漏洞***,本質上就是如何充分利用程序的邏輯來為***者完成他們想干的事情。
所以,***們能不能搞,是程序的問題,程序能不被***們當做傻子,叫它干什么事,它就干什么事,甚至有個洞就能干出點東西來。
這才是SQL注入漏洞的利用本質。比如,某些會議門票之類的,搗蛋鬼想要票還不要錢,甚至還想倒賣門票,想登錄管理員后臺,怎么搞?
這明顯非法,大家都不是傻子,這并不是你想登就能登的,對不對?但是總得找出個“傻子”出現才行,而搗蛋鬼又從來不按常規出牌。我們又如何防范這種搗蛋鬼呢?
就登錄網站這回事吧,都要輸入用戶名和密碼進行驗證,大家皆知的常識。假設這里就只有兩個輸入框:用戶名和密碼,那如何繞過這種驗證呢?
那我們就先看看繞過用戶名和密碼驗證的原理是什么?當我們輸入用戶名:hxf,密碼是:123,程序會保存到變量中, $uname='hxf',$pass='123'.這時候點擊登錄,就會把用戶名和密碼數據提交給程序.
那么被當作傻子的程序是如何進行邏輯判斷的呢?我們看看類似如下的過程:
首先執行一個SQL語句,比如sql="selectcount(*) from users where uname=$uname and password=$pass",意思是這是從數據庫中查有這個用戶名和密碼的用戶是否存在,然后程序就會根據返回結果進行邏輯判斷,如果用戶名和密碼都匹配,那么返回的結果必然不可能為空,如果不為空,那么就登錄通過。
我們咋一看這個判斷過程好像也沒有什么問題。那我們來看搗蛋是怎么搗蛋的?
直接在用戶名的輸入框輸入:1' or 1='1';# ,密碼輸入框不需要填寫任何字符,直接回車。這樣直接驗證通過,到達管理員后臺,輕松獲得web管理員權限,當然還有其它效果一樣的輸入。
為什么這樣可以得到Web管理員權限呢?我們來把動作分解一下。
當搗蛋鬼在用戶名輸入框輸入:1' or 1='1';#,那么傳到程序處理加單引號后變成:$uname="'1' or 1='1'",$pass="",這種結果傳到SQL語句在數據庫中執行就會是這樣:select count(*) from userswhere uname='1' or 1='1';# and password="",大家可以執行在一下,這條結果明顯把邏輯改變了,結果不可能為空,or的邏輯永遠為真,結果不可能為空。非空即為真,管理員登錄成功,尤其是表中只有一個管理員的情況更糟糕了。
那么如何防范這種事情呢?這里的輸入驗證存在很多的漏洞:多個輸入框都沒有驗證是否有輸入和有效字符檢查。所以防范的辦法,一方面是做字符過濾,類似的單引號和SQL關鍵字等是禁止輸入的。當然兩個輸入框是否輸入字符,輸入多少個字符,就不應該我來教育程序員了。
綜上所述,SQL注入漏洞的本質原因實際上是我們的程序問題,歸根結底仍然是人的意識問題,也因此仍然有多很網站存在諸多SQL注入漏洞問題。大多數程序員,運維和DBA其實并不了解其中的注入內幕是什么,《MySQL注入***技術內幕》是以實際SQL注入***為例,如何步步為營掌握SQL注入***,如何針對***實行反制,做好安全的防御。實際上,并非有意教大家***他人網站,而是如何防范自己網站不被他人***。刀是利器,壞人可以做壞事,好人可以防身不給壞人靠近之機。
看了以上關于MySQL數據庫的安全講義,希望能給大家在實際運用中帶來一定的幫助。本文由于篇幅有限,難免會有不足和需要補充的地方,如有需要更加專業的解答,可在官網聯系我們的24小時售前售后,隨時幫您解答問題的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。