MySQL數(shù)據(jù)庫(kù)的安全講義

本文主要給大家介紹MySQL數(shù)據(jù)庫(kù)的安全講義,希望可以給大家補(bǔ)充和更新些知識(shí),如有其它問(wèn)題需要了解的可以持續(xù)在創(chuàng)新互聯(lián)行業(yè)資訊里面關(guān)注我的更新文章的。        

創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站重做改版、雁塔網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城網(wǎng)站定制開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為雁塔等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

其實(shí)數(shù)據(jù)庫(kù)安全就那點(diǎn)事,SQL注入?,F(xiàn)代Web數(shù)據(jù)安全方面,相當(dāng)一部分公司其實(shí)并不重視數(shù)據(jù)安全的問(wèn)題,據(jù)國(guó)外統(tǒng)計(jì)超過(guò)一半的網(wǎng)站可能存在SQL注入漏洞。
  就說(shuō)最近的例子,2016年11月30日某某著名公司發(fā)送短信邀請(qǐng)本人參加云產(chǎn)品峰會(huì),收到邀請(qǐng)的二維碼短信的url,這個(gè)url的IP地址就是管理后臺(tái)就不說(shuō)了(大家應(yīng)該知道是誰(shuí)了,看完本文***他人網(wǎng)站的,自負(fù)責(zé)任)。在用戶名輸入框中直接輸入 or 1=1 ,連密碼都不需要輸入,超級(jí)管理員驗(yàn)證通過(guò),直達(dá)管理員后臺(tái)。
  話說(shuō),SQL注入漏洞這個(gè)事,能怪誰(shuí)呢?
  能怪整天整宿忙碌于擦屁屁的運(yùn)維嗎?能怪搞數(shù)據(jù)庫(kù)的DBA嗎?
  嚴(yán)格地說(shuō),他們都有責(zé)任搞好安全這點(diǎn)事。不過(guò),說(shuō)到本質(zhì),還真與他們沒(méi)有什么關(guān)系。
  有時(shí)候,程序在輸入框做好可疑字符過(guò)濾,甚至就多加一點(diǎn)邏輯判斷,安全就能完全避免的事。但是他們?yōu)槭裁淳筒蛔鲞@個(gè)檢查呢,是人安全意識(shí)問(wèn)題,還是對(duì)SQL注入不了解呢?
  SQL注入漏洞的本質(zhì)原因并不是在運(yùn)維工作層面有多大的疏忽,而是程序員沒(méi)有做好過(guò)濾和邏輯上的問(wèn)題。為什么?

MySQL數(shù)據(jù)庫(kù)的安全講義  

我們先要明確SQL漏洞***是怎么定義?SQL漏洞***,本質(zhì)上就是如何充分利用程序的邏輯來(lái)為***者完成他們想干的事情。
  所以,***們能不能搞,是程序的問(wèn)題,程序能不被***們當(dāng)做傻子,叫它干什么事,它就干什么事,甚至有個(gè)洞就能干出點(diǎn)東西來(lái)。
  這才是SQL注入漏洞的利用本質(zhì)。比如,某些會(huì)議門(mén)票之類(lèi)的,搗蛋鬼想要票還不要錢(qián),甚至還想倒賣(mài)門(mén)票,想登錄管理員后臺(tái),怎么搞?
  這明顯非法,大家都不是傻子,這并不是你想登就能登的,對(duì)不對(duì)?但是總得找出個(gè)“傻子”出現(xiàn)才行,而搗蛋鬼又從來(lái)不按常規(guī)出牌。我們又如何防范這種搗蛋鬼呢?
  就登錄網(wǎng)站這回事吧,都要輸入用戶名和密碼進(jìn)行驗(yàn)證,大家皆知的常識(shí)。假設(shè)這里就只有兩個(gè)輸入框:用戶名和密碼,那如何繞過(guò)這種驗(yàn)證呢?
  那我們就先看看繞過(guò)用戶名和密碼驗(yàn)證的原理是什么?當(dāng)我們輸入用戶名:hxf,密碼是:123,程序會(huì)保存到變量中, $uname='hxf',$pass='123'.這時(shí)候點(diǎn)擊登錄,就會(huì)把用戶名和密碼數(shù)據(jù)提交給程序.
那么被當(dāng)作傻子的程序是如何進(jìn)行邏輯判斷的呢?我們看看類(lèi)似如下的過(guò)程:
  首先執(zhí)行一個(gè)SQL語(yǔ)句,比如sql="selectcount(*) from users where uname=$uname and password=$pass",意思是這是從數(shù)據(jù)庫(kù)中查有這個(gè)用戶名和密碼的用戶是否存在,然后程序就會(huì)根據(jù)返回結(jié)果進(jìn)行邏輯判斷,如果用戶名和密碼都匹配,那么返回的結(jié)果必然不可能為空,如果不為空,那么就登錄通過(guò)。
  我們咋一看這個(gè)判斷過(guò)程好像也沒(méi)有什么問(wèn)題。那我們來(lái)看搗蛋是怎么搗蛋的?
  直接在用戶名的輸入框輸入:1' or 1='1';# ,密碼輸入框不需要填寫(xiě)任何字符,直接回車(chē)。這樣直接驗(yàn)證通過(guò),到達(dá)管理員后臺(tái),輕松獲得web管理員權(quán)限,當(dāng)然還有其它效果一樣的輸入。
   為什么這樣可以得到Web管理員權(quán)限呢?我們來(lái)把動(dòng)作分解一下。
  當(dāng)搗蛋鬼在用戶名輸入框輸入:1' or 1='1';#,那么傳到程序處理加單引號(hào)后變成:$uname="'1' or 1='1'",$pass="",這種結(jié)果傳到SQL語(yǔ)句在數(shù)據(jù)庫(kù)中執(zhí)行就會(huì)是這樣:select count(*) from userswhere uname='1' or 1='1';# and password="",大家可以執(zhí)行在一下,這條結(jié)果明顯把邏輯改變了,結(jié)果不可能為空,or的邏輯永遠(yuǎn)為真,結(jié)果不可能為空。非空即為真,管理員登錄成功,尤其是表中只有一個(gè)管理員的情況更糟糕了。

  那么如何防范這種事情呢?這里的輸入驗(yàn)證存在很多的漏洞:多個(gè)輸入框都沒(méi)有驗(yàn)證是否有輸入和有效字符檢查。所以防范的辦法,一方面是做字符過(guò)濾,類(lèi)似的單引號(hào)和SQL關(guān)鍵字等是禁止輸入的。當(dāng)然兩個(gè)輸入框是否輸入字符,輸入多少個(gè)字符,就不應(yīng)該我來(lái)教育程序員了。
  綜上所述,SQL注入漏洞的本質(zhì)原因?qū)嶋H上是我們的程序問(wèn)題,歸根結(jié)底仍然是人的意識(shí)問(wèn)題,也因此仍然有多很網(wǎng)站存在諸多SQL注入漏洞問(wèn)題。大多數(shù)程序員,運(yùn)維和DBA其實(shí)并不了解其中的注入內(nèi)幕是什么,《MySQL注入***技術(shù)內(nèi)幕》是以實(shí)際SQL注入***為例,如何步步為營(yíng)掌握SQL注入***,如何針對(duì)***實(shí)行反制,做好安全的防御。實(shí)際上,并非有意教大家***他人網(wǎng)站,而是如何防范自己網(wǎng)站不被他人***。刀是利器,壞人可以做壞事,好人可以防身不給壞人靠近之機(jī)。

看了以上關(guān)于MySQL數(shù)據(jù)庫(kù)的安全講義,希望能給大家在實(shí)際運(yùn)用中帶來(lái)一定的幫助。本文由于篇幅有限,難免會(huì)有不足和需要補(bǔ)充的地方,如有需要更加專(zhuān)業(yè)的解答,可在官網(wǎng)聯(lián)系我們的24小時(shí)售前售后,隨時(shí)幫您解答問(wèn)題的。

網(wǎng)站名稱(chēng):MySQL數(shù)據(jù)庫(kù)的安全講義
鏈接URL:http://bm7419.com/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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司