国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于B/S系統(tǒng)的SQL注入防御技術(shù)研究

2020-03-16 03:17吳濤張俊
電腦知識與技術(shù) 2020年2期
關(guān)鍵詞:S架構(gòu)

吳濤 張俊

摘要:隨著互聯(lián)網(wǎng)的發(fā)展,基于 Web 服務(wù)器語言和后臺數(shù)據(jù)庫模式的網(wǎng)站存在安全性問題,其中SQL注入數(shù)據(jù)庫是最具威脅B/S系統(tǒng)漏洞的攻擊。該文分析了SQL注入原理及特點(diǎn),研究了預(yù)防 SQL注入的攻擊方法,針對B/S系統(tǒng)的特點(diǎn),提出了字段檢查、注入測試、服務(wù)器加固、綁定變量和禁止字符串拼接等SQL注入的防治手段,對預(yù)防SQL注入提供了有效的方法,增加了B/S系統(tǒng)的安全性。

關(guān)鍵詞:SQL注入;B/S架構(gòu);WEB安全

中圖分類號:TP393? ? ? ?文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2020)02-0007-02

Abstract: with the development of Internet, there are security problems in Web sites Based on Web server language and background database mode, among which SQL injection database is the most dangerous attack to B/S system vulnerability. This paper analyzes the principle and characteristics of SQL injection, studies the methods to prevent SQL injection. According to the characteristics of B/S system, it puts forward the prevention measures of SQL injection, such as field check, injection test, server reinforcement, binding variables and forbidding string splicing. It provides an effective method to prevent SQL injection and increases the security of B/S system.

Key words: SQL injection; B/S architecture; Web Security

由于網(wǎng)絡(luò)的快速發(fā)展,B/S系統(tǒng)的功能越來越強(qiáng)大。B/S系統(tǒng)通過瀏覽器即可進(jìn)行訪問,十分便捷。同時(shí)B/S系統(tǒng)也伴隨著各方面的安全性問題,其中SQL注入是一個(gè)很敏感的漏洞,其特點(diǎn)是在用戶輸入或者信息上傳時(shí),將惡意數(shù)據(jù)或者代碼上傳到 WEB 應(yīng)用系統(tǒng)中,導(dǎo)致系統(tǒng)崩潰、獲取敏感信息等惡劣行為。SQL 注入攻擊的技術(shù)門檻低、隱蔽性強(qiáng)、危害性大、殺毒軟件也無法查殺,一旦若獲取網(wǎng)站 Web Shell 權(quán)限,便可上傳網(wǎng)頁木馬、控制整站等違法操作。本文針對SQL注入原理及特點(diǎn),提出了字段檢查、注入測試、服務(wù)器加固和綁定變量等有效的防治手段,旨在增強(qiáng)B/S系統(tǒng)的安全性。

1 SQL注入的原理和方法

SQL注入就是通過輸入域或頁面請求的查詢字符串,欺騙服務(wù)器執(zhí)行惡意的SQL命令[1],從而獲得數(shù)據(jù),對數(shù)據(jù)庫進(jìn)行破壞等操作,最終達(dá)到控制整個(gè)服務(wù)器的目的。典型的SQL注入分為兩類,分別是數(shù)據(jù)庫平臺注入和應(yīng)用層注入(WEB應(yīng)用層)。數(shù)據(jù)庫平臺注入往往是存在惡意攻擊數(shù)據(jù)庫。數(shù)據(jù)庫平臺的注入就需要數(shù)據(jù)庫管理人員(DBA)對數(shù)據(jù)進(jìn)行全方位的管理,包括數(shù)據(jù)庫的配置,數(shù)據(jù)庫權(quán)限的管理等等,能夠在數(shù)據(jù)庫層面有效地杜絕SQL的注入;平臺注入就是典型的進(jìn)行發(fā)送請求字符串,構(gòu)成一些特殊的SQL語句(例如“selecr * from Student where from password = ‘xxx ‘ or 1 = 1”等),從而進(jìn)行系統(tǒng)的破壞或者獲得非法數(shù)據(jù)。由于SQL注入的信息和普通用戶訪問的方式一模一樣,難以防御,所以SQL注入也成為B/S系統(tǒng)一個(gè)很嚴(yán)重的安全問題。典型的輸入域和請求查詢的時(shí)機(jī)如表1所示。

2 SQL注入的防治手段

2.1 進(jìn)行字段檢查

SQL注入時(shí)使用一些特殊的字符去拼接服務(wù)器后臺的SQL語句,常見是字符串拼接如表2所示。為了防止這種字符串的拼接,增加信息的安全性,我們可以對異常注入的信息建立一個(gè)云計(jì)算庫,并定期對庫中的數(shù)據(jù)進(jìn)行管理、升級等等。從而到達(dá)數(shù)據(jù)的及時(shí)性。當(dāng)我們在執(zhí)行SQL語句的時(shí)候。自動在庫中進(jìn)行匹配。若發(fā)現(xiàn)相似度高的、可疑的。發(fā)現(xiàn)問題及時(shí)進(jìn)行反饋[2]。匹配具體流程如圖1所示。

2.2 進(jìn)行大規(guī)模的注入測試

SQL注入典型的攻擊有盲目注入,建表操作,跨表操作。對于盲目注入[3],就是攻擊對象去惡意猜測服務(wù)器端的錯誤,用一些可能錯誤的代碼進(jìn)行大量測試,最終達(dá)到竊取服務(wù)器數(shù)據(jù)的問題。盲目注入又分為布爾盲注,時(shí)間盲注,延時(shí)盲注等,我們可以針對不同的盲注方式[4],在程序上線之前,對程序進(jìn)行嚴(yán)格的測試,以便發(fā)現(xiàn)問題并解決問題。

2.3 對數(shù)據(jù)庫服務(wù)器進(jìn)行加固

對數(shù)據(jù)庫服務(wù)器端進(jìn)行加固,增加服務(wù)器的防火墻水平,對不同的用戶進(jìn)行不同的權(quán)限受理[5],這樣,一般的用戶就只能看到自己權(quán)限范圍內(nèi)的數(shù)據(jù),當(dāng)用戶進(jìn)行越級操作的時(shí)候,設(shè)置觸發(fā)機(jī)制,及時(shí)進(jìn)行反饋,檢查是否出現(xiàn)SQL注入問題。提高數(shù)據(jù)庫的日志記錄級別,把日志記錄保存到獨(dú)立的物理磁盤上面,定期進(jìn)行檢查,發(fā)現(xiàn)疑似問題及時(shí)進(jìn)行修復(fù)。

2.4 綁定變量

當(dāng)我們大規(guī)模使用SQL語句的時(shí)候,一條一條的SQL語句這樣的執(zhí)行,顯然就不滿足效率的要求了,我們可以對一段SQL語句進(jìn)行“聚集”化的操作,使一段SQL語句編程一個(gè)整體,就是綁定變量的方法,執(zhí)行的時(shí)候,就是一次性執(zhí)行完畢,這種方法雖然在一定程度上防止了SQL注入的風(fēng)險(xiǎn)。但是這種方式也存在一些弊端,額外的編碼過程就顯得十分的繁重,但是能夠避免SQL的安全性問題,應(yīng)該進(jìn)行權(quán)衡,在進(jìn)行綁定變量的操作。

2.5 禁止使用字符串的拼接

數(shù)據(jù)庫中有兩種傳值符號,一種是$(),作用是在進(jìn)行字符串拼接后,再由數(shù)據(jù)庫進(jìn)行編譯,通常使用JDBC中的Starement對象來進(jìn)行語句的執(zhí)行,在數(shù)據(jù)庫平臺中,對特殊字符的防范是很弱的,一旦變量進(jìn)入了數(shù)據(jù)庫系統(tǒng),很大程度上增加了SQL注入的風(fēng)險(xiǎn);一種是#(),這種被稱為占位符,在進(jìn)行數(shù)據(jù)庫訪問的時(shí)候,先把SQL語句中需要拼接的字段通過特殊符號進(jìn)行占位,然后進(jìn)行數(shù)據(jù)庫的預(yù)編譯,預(yù)編譯完成之后,在對相應(yīng)字段進(jìn)行字符串的拼接,注入?yún)?shù)后,就不會在對SQL進(jìn)行編譯。通常配合JDBC中的prepareStatement來進(jìn)行預(yù)編譯;在數(shù)據(jù)庫的操作中,應(yīng)該禁止$()的使用,能夠有效地預(yù)防SQL的注入;#()和$()的區(qū)別如表3所示;

3 結(jié)束語

隨著B/S架構(gòu)的快速發(fā)展,服務(wù)器的安全性也顯得越來越重要,SQL注入可以繞過殺毒軟件的查殺,如果不增加特別的防護(hù),SQL注入將會竊取我們的數(shù)據(jù)。安全性不容忽視。本文介紹的字段檢查、注入測試、數(shù)據(jù)庫加固、綁定變量和禁止字符串拼接等,從各個(gè)方面闡述了預(yù)防SQL注入的方法,能夠有效地預(yù)防SQL的注入,保證用戶和公司的安全。

參考文獻(xiàn):

[1] 葉良艷. SQL注入漏洞檢測防御關(guān)鍵技術(shù)綜述[J]. 安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào), 2018, 17(3):19-22.

[2] 葉夢雄. 基于Web的SQL注入漏洞掃描系統(tǒng)的設(shè)計(jì)研究[J]. 電子設(shè)計(jì)工程, 2019, 27(16):20-23, 28.

[3] 王苗苗, 錢步仁, 許瑩瑩, 等. 基于通用規(guī)則的SQL注入攻擊檢測與防御系統(tǒng)的研究[J]. 電子設(shè)計(jì)工程, 2017, 25(5):24-28, 32.

[4] 高洪濤. SQL注入攻擊途徑及策略分析[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用, 2011(3):14-16.

[5] 劉雪梅. 基于SQL Server數(shù)據(jù)庫的安全性對策探究[J]. 電腦編程技巧與維護(hù), 2019(9):96-98.

【通聯(lián)編輯:謝媛媛】

猜你喜歡
S架構(gòu)
基于ASP.NET校園電子商務(wù)的系統(tǒng)設(shè)計(jì)
C/S架構(gòu)下的中職教學(xué)輔助系統(tǒng)的新探索
三穗县| 乌什县| 古田县| 通城县| 商河县| 锡林浩特市| 湖南省| 五河县| 遵义县| 巴彦淖尔市| 旬邑县| 尚义县| 平湖市| 博兴县| 会宁县| 阿尔山市| 商丘市| 黄冈市| 宜昌市| 桃源县| 雅江县| 阳西县| 定陶县| 额尔古纳市| 淮安市| 乌什县| 象州县| 舒城县| 阿图什市| 雷山县| 仙游县| 甘谷县| 奉化市| 都匀市| 海安县| 永仁县| 巴林右旗| 汝城县| 老河口市| 广水市| 信丰县|