康愛贏 范書國 甄琢 孟丹
摘? ?要:隨著互聯(lián)網(wǎng)的快速發(fā)展,SQL注入攻擊是現(xiàn)階段較為常見的攻擊方式之一,也是目前應(yīng)用開發(fā)所面臨的重大安全隱患。本文介紹了SQL注入攻擊特點(diǎn)、分析了SQL注入攻擊原理及成因,并以東北糧網(wǎng)金融子系統(tǒng)未對用戶輸入的特殊字符進(jìn)行過濾問題為例,此問題有可能導(dǎo)致系統(tǒng)全局存在SQL注入漏洞,容易造成敏感信息的泄露。在此基礎(chǔ)上,針對SQL注入攻擊特點(diǎn),提出了防范SQL注入攻擊問題的相關(guān)措施。為程序開發(fā)初學(xué)者在開發(fā)系統(tǒng)時建立起一套完整的安全開發(fā)規(guī)范提供幫助。
關(guān)鍵詞:SQL注入攻擊? 東北糧網(wǎng)? SQL攻擊防范
中圖分類號:TP393? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A? ? ? ? ? ? ? ? ? ? ? ? 文章編號:1674-098X(2019)11(a)-0143-02
網(wǎng)絡(luò)安全是信息化的重要基石。網(wǎng)絡(luò)信息主要涉及個人信息、企業(yè)信息及國家的政府、軍事、經(jīng)濟(jì)等各個領(lǐng)域的信息,其中大多數(shù)信息是敏感信息甚至是國家機(jī)密。東北糧網(wǎng)將互聯(lián)網(wǎng)與糧食流通業(yè)務(wù)進(jìn)行融合,符合國家和地方的糧食產(chǎn)業(yè)發(fā)展政策,對推進(jìn)糧食流通體制改革,具有重大意義。東北糧網(wǎng)作為一站式綜合服務(wù)平臺,直接涉及到用戶的大宗糧食交易及企業(yè)隱私。為保護(hù)用戶和企業(yè)隱私,東北糧網(wǎng)平臺本身的安全性至關(guān)重要。
SQL注入都是非常隱蔽的,很多時候無法被發(fā)現(xiàn),所以SQL注入攻擊有著非常大的危害性,容易造成信息的泄露。目前有許多防范SQL注入的方法,例如,加密處理、錯誤消息處理、輸入驗證、使用參數(shù)化的過濾性語句、使用專業(yè)的漏洞掃描工具等。但是安全漏洞和攻擊手段變化層出不窮,使得網(wǎng)絡(luò)信息安全面臨挑戰(zhàn)。為了有效對SQL注入攻擊漏洞進(jìn)行防御,要了解 SQL 注入攻擊特點(diǎn)、原理及成因。
1? SQL注入攻擊特點(diǎn)
SQL注入攻擊問題是目前網(wǎng)絡(luò)攻擊中最常見的手段之一,是影響網(wǎng)絡(luò)安全最嚴(yán)重的漏洞,危險性較高。SQL注入攻擊主要是由于程序員在開發(fā)過程中沒有對客戶端所傳輸?shù)椒?wù)器端的參數(shù)進(jìn)行嚴(yán)格的安全檢查,同時SQL語句的執(zhí)行引用了該參數(shù),并且SQL語句采用字符串拼接的方式執(zhí)行時,攻擊者將可能在參數(shù)中插入惡意的SQL查詢語句,導(dǎo)致服務(wù)器執(zhí)行了該惡意SQL語句。SQL注入漏洞主要影響是攻擊者可利用該漏洞竊取數(shù)據(jù)庫中的任意內(nèi)容,在某些場景下,攻擊者將有可能獲得數(shù)據(jù)庫服務(wù)器的完全控制權(quán)限。在一定程度上SQL注入攻擊超過緩沖區(qū)溢出漏洞,防火墻為了使正常網(wǎng)絡(luò)應(yīng)用程序訪問服務(wù)器端的數(shù)據(jù),必須允許從互聯(lián)網(wǎng)到Web服務(wù)器的正向連接,當(dāng)前絕大多數(shù)的防火墻不能對SQL注入漏洞進(jìn)行有效的檢測和防范,無法就SQL注入問題發(fā)出警報。所以,一旦web網(wǎng)絡(luò)應(yīng)用程序存在注入漏洞,攻擊者就可以獲得數(shù)據(jù)庫訪問權(quán),從而獲得數(shù)據(jù)庫所在服務(wù)器的訪問權(quán)。SQL注入攻擊普遍存在范圍廣、實現(xiàn)容易、破壞性大等特點(diǎn)。
2? SQL注入攻擊原理及成因
SQL 注入攻擊是一種攻擊數(shù)據(jù)庫的常見攻擊,常見攻擊手段是攻擊者通過輸入問題代碼,將問題代碼直接嵌入到將要執(zhí)行的SQL語句,然后執(zhí)行SQL指令,完成修改數(shù)據(jù)庫內(nèi)容,竊取數(shù)據(jù)等一系列攻擊行為。網(wǎng)絡(luò)攻擊者也可以利用工具入侵到有SQL注入漏洞的網(wǎng)站。
3? 東北糧網(wǎng)實例分析
由于東北糧網(wǎng)金融子系統(tǒng)未對用戶輸入的特殊字符進(jìn)行過濾,導(dǎo)致了對于用戶輸入的任何數(shù)據(jù),系統(tǒng)是可信的,從而導(dǎo)致SQL注入的產(chǎn)生,SQL注入漏洞會導(dǎo)致線上數(shù)據(jù)被篡改、服務(wù)器被控制。導(dǎo)致整個系統(tǒng)存在高危安全風(fēng)險。存在漏洞的代碼截圖如圖1所示:
通過對系統(tǒng)進(jìn)行源代碼的分析,發(fā)現(xiàn)該系統(tǒng)在框架層面沒有完全屏蔽SQL注入漏洞。從而暴露出來其它漏洞類型,例如,存儲性XSS、敏感信息泄露、水平越權(quán)-獲取他人用戶權(quán)限、垂直越權(quán)-獲取管理員權(quán)限、任意上傳、水平越權(quán)-遍歷合同信息以及某些邏輯問題。
4? SQL注入攻擊的防范對策
(1)使用Apache Torque處理執(zhí)行SQL語句,使用數(shù)據(jù)庫持久化的方式操作SQL語句。Apache Torque是一個使用關(guān)系數(shù)據(jù)庫作為存儲手段的Java應(yīng)用程序持久化工具,可以進(jìn)行數(shù)據(jù)庫持久化相關(guān)操作,也可以直接執(zhí)行SQL語句,東北糧網(wǎng)金融子系統(tǒng)在直接執(zhí)行SQL語句時將變量作為字符串直接進(jìn)行拼接并執(zhí)行,導(dǎo)致了SQL注入漏洞。
(2)使用Hibernate處理執(zhí)行SQL語句,使用數(shù)據(jù)庫持久化的方式操作SQL語句。Hibernate是一個開放源代碼的對象關(guān)系映射框架,它可以對JDBC進(jìn)行非常輕量級的對象封裝,它將POJO與數(shù)據(jù)庫表建立映射關(guān)系,是一個全自動的orm框架,可以進(jìn)行數(shù)據(jù)庫持久化相關(guān)操作,也可以自動生成SQL語句,自動執(zhí)行,東北糧網(wǎng)系統(tǒng)在直接執(zhí)行SQL語句時將變量作為字符串直接進(jìn)行拼接并執(zhí)行,導(dǎo)致了SQL注入漏洞。
(3)使用預(yù)處理執(zhí)行SQL語句,對所有傳入SQL語句中的變量做綁定。這樣,用戶拼接進(jìn)來的變量,無論內(nèi)容是什么,都會被當(dāng)做替代符號“?”所替代的值,數(shù)據(jù)庫也不會把惡意用戶拼接進(jìn)來的數(shù)據(jù),當(dāng)做部分SQL語句去解析。
5? 結(jié)語
SQL注入攻擊漏洞是網(wǎng)站系統(tǒng)的重大安全隱患,SQL 注入攻擊對系統(tǒng)數(shù)據(jù)庫的影響非常大,本文就SQL注入攻擊的特點(diǎn)、原理及成因進(jìn)行了闡述,并且對東北糧網(wǎng)金融子系統(tǒng)的SQL 注入攻擊問題進(jìn)行了實例分析,提出了SQL 注入攻擊防范方法。通過此次分析,希望從程序開發(fā)角度,為程序開發(fā)初學(xué)者在開發(fā)系統(tǒng)時提供好的安全引導(dǎo),建立起一套完整的安全開發(fā)規(guī)范提供幫助,并可以很大程度上增強(qiáng)系統(tǒng)的安全性,從而為用戶提供一個安全、可信的平臺。
參考文獻(xiàn)
[1] 葉良艷.SQL注入漏洞檢測防御關(guān)鍵技術(shù)綜述[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報,2018,17(3):19-22.
[2] 王萬兵.常見WEB攻擊方法及其安全防范策略的研究[D].南昌航空大學(xué),2017.
[3] Karishma Varshney,R. L. Ujjwal. LsSQLIDP : Literature survey on SQL injection detection and prevention techniques[J]. Journal of Statistics and Management Systems,2019,22(2).