安華金和全面適配國產(chǎn)化操作系統(tǒng)及芯片CPU
數(shù)據(jù)安全治理關(guān)鍵技術(shù)之數(shù)據(jù)庫脫敏技術(shù)詳解
數(shù)據(jù)安全治理之API監(jiān)測系統(tǒng) ,解決API接口安全問題【安華金和】
新一代數(shù)據(jù)庫脫敏技術(shù),為敏感數(shù)據(jù)建立保護盾!
數(shù)據(jù)庫脫敏系統(tǒng)與金融行業(yè)案例解讀
數(shù)據(jù)安全治理建設(shè)思路的著力點——數(shù)據(jù)安全咨詢服務(wù)【安華金和】
數(shù)據(jù)庫防火墻功能有哪些?-數(shù)據(jù)安全-安華金和
數(shù)據(jù)安全關(guān)鍵技術(shù)之數(shù)據(jù)庫脫敏技術(shù)詳解【安華金和】
中國數(shù)據(jù)安全治理落地指導(dǎo)書籍《數(shù)據(jù)安全治理白皮書5.0》正式發(fā)布(附下載)
摘要:本文將通過對SQL注入攻擊技術(shù)和數(shù)據(jù)庫加密技術(shù)原理以及防護效果進行深入的分析,來辨析數(shù)據(jù)庫安全技術(shù)誤區(qū)“數(shù)據(jù)庫加密能解決SQL注入”,同時本文也給出了SQL注入的防護方法。
針對2015年4月互聯(lián)網(wǎng)大規(guī)模報道的全國30省市社保等行業(yè)用戶信息泄露事件,安華金和對烏云歷史報道的社保行業(yè)相關(guān)漏洞進行集中分析,得出的結(jié)
論為:大量的信息泄露主要是由于軟件中存在的SQL注入漏洞被黑客利用引起的,我們可以把SQL注入比作黑客攻擊數(shù)據(jù)庫“鋒利的矛”。
有了攻擊用的矛,我們再來看防守用的盾:數(shù)據(jù)庫加密技術(shù)真正實現(xiàn)了敏感數(shù)據(jù)的加密存儲,采用國內(nèi)外主流的加密算法,確保加密后的數(shù)據(jù)通過非正常手段獲取后
十年內(nèi)難以非法破解,同時通過獨立權(quán)控、應(yīng)用綁定,防止繞過合法應(yīng)用程序的數(shù)據(jù)庫訪問和對內(nèi)部高權(quán)限人員的運維操作管控,號稱數(shù)據(jù)庫安全中的王冠,我們可
以把數(shù)據(jù)庫加密技術(shù)比作數(shù)據(jù)安全防護措施中“堅固的盾”。
《韓非子?難一》所述的故事中提到:“以子之矛,陷子之盾,何如?”雖然這是個眾人皆知的故事,但是現(xiàn)實版的“矛與盾”的故事又發(fā)生在大學(xué)教材《信息系統(tǒng)安全概論》中,下面我們先引用教材中的原文:
對于安全管理員來說,是否可以通過數(shù)據(jù)庫加密來防止SQL注入呢?在詳細解釋兩種攻防技術(shù)前,我們對一個誤區(qū)給予糾正:數(shù)據(jù)庫加密技術(shù)無法抵御SQL注入。原因是數(shù)據(jù)庫加密解決信用卡信息存儲安全等問題,而SQL注入是利用應(yīng)用的弱點竊取數(shù)據(jù),由于合法應(yīng)用肯定能看到明文的信息卡數(shù)據(jù),因此加密防守無效。
那SQL注入如何正確防護呢?下面我們先了解下SQL注入攻擊的原理。
對于安全管理員來說這也是必要的,因為不僅要了解防護的手段,同時也應(yīng)該深入了解SQL注入的原理,實現(xiàn)有針對性的安全防護。
SQL注入數(shù)據(jù)庫攻擊指構(gòu)建特殊的輸入作為參數(shù)傳入Web應(yīng)用程序,比如通過提交表單的文本框輸入,而這些輸入大都是SQL語法里的一些組合,通過執(zhí)行SQL語句進而執(zhí)行攻擊者所要的操作,其主要原因是程序沒有細致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)。
常見的SQL注入案例有兩種情況,一種是偽裝登錄應(yīng)用系統(tǒng),另一種是在有登錄賬號的情況下,在應(yīng)用系統(tǒng)后續(xù)的提交表單的文本框中找到SQL注入點,然后利用注入點批量竊取數(shù)據(jù)。如下兩圖的輸入:
SQL注入的典型場景一,通過偽裝登錄竊取數(shù)據(jù),主要是通過or運算符。
竊取數(shù)據(jù)
假設(shè)后臺的拼接語句為select * from table where column1=‘ 文本框輸入值’ ;
Eg1: 如輸入值為《abc ’ or ‘1’=‘1》, 則語句拼接為 select *…where column1=‘a(chǎn)bc’ or ‘1’=‘1’;由于’1’=‘1’是恒真,則該可以看到了整表的全部數(shù)據(jù)。
騙取登錄
一般系統(tǒng)的登錄需要輸入用戶名、密碼;后臺拼接的語句為select * from t where name=‘用戶名’ and pwd=md5(‘密碼’);
Eg1: 如輸入用戶名《abc ’ or 1=1 or 1=‘ def》,密碼《abcd》則語句拼接為:
select …where name=‘a(chǎn)bc’ or 1=1 or 1=‘def’ and pwd = md5(‘a(chǎn)bcd’); 由于1=1是恒真,則該語句永遠為真,可以成功登錄了。
SQL 注入典型場景二,探測(通過and 運算)。
探測系統(tǒng)變量
… and user>0
我們知道,user是SQLServer的一個內(nèi)置變量,它的值是當前連接的用戶名,類型為nvarchar。拿一個 nvarchar的值跟int的數(shù)0比較,系統(tǒng)會先試圖將nvarchar的值轉(zhuǎn)成int型,當然,轉(zhuǎn)的過程中肯定會出錯,SQLServer的出錯提示 是:將nvarchar轉(zhuǎn)換int異常,XXXX不能轉(zhuǎn)換成int。
探測系統(tǒng)對象名
先猜表名
… and (Select count(*) from 表名)<>0
猜列名
… and (Select count(列名) from 表名)<>0
面臨風險 | 應(yīng)對策略 |
數(shù)據(jù)庫文件采用明文存儲 | 以列為單位有選擇的進行加密,將信用卡信息表中的姓名、身份證、信用卡等敏感信息加密存儲。 |
面臨風險 | 應(yīng)對策略 |
數(shù)據(jù)庫正常運維操作和敏感數(shù)據(jù)訪問操作從權(quán)限上無法分開。 | 通過獨立權(quán)控體系;通過三權(quán)分立的方式提升安全性;避免數(shù)據(jù)庫維護人員直接接觸明文數(shù)據(jù) |
面臨風險 | 應(yīng)對策略 |
繞過應(yīng)用服務(wù)器的訪問。 | 通過客戶端權(quán)限區(qū)分合法訪問源,可對訪問源的IP,訪問時間進行鑒別,只有通過合法訪問源才可以訪問到數(shù)據(jù)。 |
面臨風險 | 應(yīng)對策略 |
繞過應(yīng)用程序的訪問。 | 通過應(yīng)用綁定技術(shù)實現(xiàn)應(yīng)用身份鑒別。 |
面臨風險 | 應(yīng)對策略 |
數(shù)據(jù)庫備份明文存儲。 | 對數(shù)據(jù)庫文件底層直接加密,數(shù)據(jù)庫備份文件導(dǎo)出后內(nèi)容仍為密文,備份文件還原后仍為密文。 |
數(shù)據(jù)庫加密防護總結(jié):
卡爾的SQL注入攻擊就是利用合法應(yīng)用的弱點獲取信息卡資料的,即使數(shù)據(jù)庫信用卡信息加密了,從存儲文件上看是密文,但是對于合法應(yīng)用發(fā)過來的查詢語句,數(shù)據(jù)庫也必然解密后將明文數(shù)據(jù)發(fā)回web應(yīng)用系統(tǒng)。
數(shù)據(jù)庫安全專家安華金和建議通過WAF和數(shù)據(jù)庫防火墻相結(jié)合來實現(xiàn)SQL注入的有效防護。WAF通過黑名單機制針對有SQL注入特征的表單內(nèi)容進行 攔截,數(shù)據(jù)庫防火墻通過構(gòu)建合法應(yīng)用的行為模型和SQL注入特征庫實現(xiàn)SQL注入行為的有效攔截,同時還能夠?qū)\維終端的惡意操作進行攔截。