本文主要給大家介紹MySQL數(shù)據(jù)庫的安全講義,希望可以給大家補(bǔ)充和更新些知識,如有其它問題需要了解的可以持續(xù)在創(chuàng)新互聯(lián)行業(yè)資訊里面關(guān)注我的更新文章的。
創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、雁塔網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為雁塔等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
其實(shí)數(shù)據(jù)庫安全就那點(diǎn)事,SQL注入。現(xiàn)代Web數(shù)據(jù)安全方面,相當(dāng)一部分公司其實(shí)并不重視數(shù)據(jù)安全的問題,據(jù)國外統(tǒng)計(jì)超過一半的網(wǎng)站可能存在SQL注入漏洞。
就說最近的例子,2016年11月30日某某著名公司發(fā)送短信邀請本人參加云產(chǎn)品峰會(huì),收到邀請的二維碼短信的url,這個(gè)url的IP地址就是管理后臺(tái)就不說了(大家應(yīng)該知道是誰了,看完本文***他人網(wǎng)站的,自負(fù)責(zé)任)。在用戶名輸入框中直接輸入 or 1=1 ,連密碼都不需要輸入,超級管理員驗(yàn)證通過,直達(dá)管理員后臺(tái)。
話說,SQL注入漏洞這個(gè)事,能怪誰呢?
能怪整天整宿忙碌于擦屁屁的運(yùn)維嗎?能怪搞數(shù)據(jù)庫的DBA嗎?
嚴(yán)格地說,他們都有責(zé)任搞好安全這點(diǎn)事。不過,說到本質(zhì),還真與他們沒有什么關(guān)系。
有時(shí)候,程序在輸入框做好可疑字符過濾,甚至就多加一點(diǎn)邏輯判斷,安全就能完全避免的事。但是他們?yōu)槭裁淳筒蛔鲞@個(gè)檢查呢,是人安全意識問題,還是對SQL注入不了解呢?
SQL注入漏洞的本質(zhì)原因并不是在運(yùn)維工作層面有多大的疏忽,而是程序員沒有做好過濾和邏輯上的問題。為什么?
我們先要明確SQL漏洞***是怎么定義?SQL漏洞***,本質(zhì)上就是如何充分利用程序的邏輯來為***者完成他們想干的事情。
所以,***們能不能搞,是程序的問題,程序能不被***們當(dāng)做傻子,叫它干什么事,它就干什么事,甚至有個(gè)洞就能干出點(diǎn)東西來。
這才是SQL注入漏洞的利用本質(zhì)。比如,某些會(huì)議門票之類的,搗蛋鬼想要票還不要錢,甚至還想倒賣門票,想登錄管理員后臺(tái),怎么搞?
這明顯非法,大家都不是傻子,這并不是你想登就能登的,對不對?但是總得找出個(gè)“傻子”出現(xiàn)才行,而搗蛋鬼又從來不按常規(guī)出牌。我們又如何防范這種搗蛋鬼呢?
就登錄網(wǎng)站這回事吧,都要輸入用戶名和密碼進(jìn)行驗(yàn)證,大家皆知的常識。假設(shè)這里就只有兩個(gè)輸入框:用戶名和密碼,那如何繞過這種驗(yàn)證呢?
那我們就先看看繞過用戶名和密碼驗(yàn)證的原理是什么?當(dāng)我們輸入用戶名:hxf,密碼是:123,程序會(huì)保存到變量中, $uname='hxf',$pass='123'.這時(shí)候點(diǎn)擊登錄,就會(huì)把用戶名和密碼數(shù)據(jù)提交給程序.
那么被當(dāng)作傻子的程序是如何進(jìn)行邏輯判斷的呢?我們看看類似如下的過程:
首先執(zhí)行一個(gè)SQL語句,比如sql="selectcount(*) from users where uname=$uname and password=$pass",意思是這是從數(shù)據(jù)庫中查有這個(gè)用戶名和密碼的用戶是否存在,然后程序就會(huì)根據(jù)返回結(jié)果進(jìn)行邏輯判斷,如果用戶名和密碼都匹配,那么返回的結(jié)果必然不可能為空,如果不為空,那么就登錄通過。
我們咋一看這個(gè)判斷過程好像也沒有什么問題。那我們來看搗蛋是怎么搗蛋的?
直接在用戶名的輸入框輸入:1' or 1='1';# ,密碼輸入框不需要填寫任何字符,直接回車。這樣直接驗(yàn)證通過,到達(dá)管理員后臺(tái),輕松獲得web管理員權(quán)限,當(dāng)然還有其它效果一樣的輸入。
為什么這樣可以得到Web管理員權(quán)限呢?我們來把動(dòng)作分解一下。
當(dāng)搗蛋鬼在用戶名輸入框輸入:1' or 1='1';#,那么傳到程序處理加單引號后變成:$uname="'1' or 1='1'",$pass="",這種結(jié)果傳到SQL語句在數(shù)據(jù)庫中執(zhí)行就會(huì)是這樣:select count(*) from userswhere uname='1' or 1='1';# and password="",大家可以執(zhí)行在一下,這條結(jié)果明顯把邏輯改變了,結(jié)果不可能為空,or的邏輯永遠(yuǎn)為真,結(jié)果不可能為空。非空即為真,管理員登錄成功,尤其是表中只有一個(gè)管理員的情況更糟糕了。
那么如何防范這種事情呢?這里的輸入驗(yàn)證存在很多的漏洞:多個(gè)輸入框都沒有驗(yàn)證是否有輸入和有效字符檢查。所以防范的辦法,一方面是做字符過濾,類似的單引號和SQL關(guān)鍵字等是禁止輸入的。當(dāng)然兩個(gè)輸入框是否輸入字符,輸入多少個(gè)字符,就不應(yīng)該我來教育程序員了。
綜上所述,SQL注入漏洞的本質(zhì)原因?qū)嶋H上是我們的程序問題,歸根結(jié)底仍然是人的意識問題,也因此仍然有多很網(wǎng)站存在諸多SQL注入漏洞問題。大多數(shù)程序員,運(yùn)維和DBA其實(shí)并不了解其中的注入內(nèi)幕是什么,《MySQL注入***技術(shù)內(nèi)幕》是以實(shí)際SQL注入***為例,如何步步為營掌握SQL注入***,如何針對***實(shí)行反制,做好安全的防御。實(shí)際上,并非有意教大家***他人網(wǎng)站,而是如何防范自己網(wǎng)站不被他人***。刀是利器,壞人可以做壞事,好人可以防身不給壞人靠近之機(jī)。
看了以上關(guān)于MySQL數(shù)據(jù)庫的安全講義,希望能給大家在實(shí)際運(yùn)用中帶來一定的幫助。本文由于篇幅有限,難免會(huì)有不足和需要補(bǔ)充的地方,如有需要更加專業(yè)的解答,可在官網(wǎng)聯(lián)系我們的24小時(shí)售前售后,隨時(shí)幫您解答問題的。
網(wǎng)站名稱:MySQL數(shù)據(jù)庫的安全講義
鏈接URL:http://chinadenli.net/article22/geipjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站改版、標(biāo)簽優(yōu)化、微信小程序、服務(wù)器托管、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)