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