亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        SQL注入攻擊與防范技術(shù)研究

        2017-01-18 11:30:26胡萍浙江理工大學科技與藝術(shù)學院現(xiàn)代教育技術(shù)中心
        消費導刊 2016年12期
        關(guān)鍵詞:用戶名后臺攻擊者

        胡萍 浙江理工大學科技與藝術(shù)學院現(xiàn)代教育技術(shù)中心

        陳志鵬 中國聯(lián)通杭州市分公司

        SQL注入攻擊與防范技術(shù)研究

        胡萍 浙江理工大學科技與藝術(shù)學院現(xiàn)代教育技術(shù)中心

        陳志鵬 中國聯(lián)通杭州市分公司

        隨著互聯(lián)網(wǎng)的發(fā)展,Web應用無處不在,近幾年不斷爆出Web應用系統(tǒng)信息泄露的重大安全事件,大多與SQL注入漏洞有關(guān),SQL注入的危害可見一斑,它是Web應用最為常見的漏洞之一。本文通過簡單示例詳細闡述了SQL注入攻擊的基本原理,并深入分析SQL注入攻擊過程,歸納出了SQL注入的五個行為特征,并從五個行為特征出發(fā),針對性地提出了防范SQL注入攻擊的有效方法和策略。

        SQL注入攻擊 Web應用 漏洞 安全

        引言

        隨著信息技術(shù)和互聯(lián)網(wǎng)的發(fā)展,后臺數(shù)據(jù)庫聚集著大量個人信息和專有信息,這些信息具有很高的經(jīng)濟價值,是最寶貴的資產(chǎn),因此,后臺數(shù)據(jù)庫很容易被盯上并入侵。數(shù)據(jù)庫入侵攻擊可以大致分為兩類:一類是通過數(shù)據(jù)庫漏洞或者非法獲取數(shù)據(jù)庫賬號直接入侵數(shù)據(jù)庫;另一類是通過Web應用程序漏洞間接入侵數(shù)據(jù)庫,這種類型的數(shù)據(jù)庫入侵是眾所周知的SQL注入攻擊(SQLIA)。通常數(shù)據(jù)庫不直接面向用戶,第一類攻擊出現(xiàn)的可能性較小,不在本文討論范圍,本文主要針對第二類攻擊進行研究。SQL注入攻擊從Web誕生到現(xiàn)在一直沒停過,許多公司的Web應用系統(tǒng)都曾經(jīng)遭受SQL注入攻擊,甚至被拖庫,不但給公司造成了經(jīng)濟損失,而且對公司品牌和形象產(chǎn)生負面影響。本文將對SQL注入攻擊的原理和過程進行深入分析,并提出有效防范手段。

        一、SQL注入攻擊原理

        SQL注入攻擊是攻擊者通過正常的Web頁面輸入,并向Web應用程序提交特定的SQL代碼,從而讓后臺數(shù)據(jù)庫執(zhí)行一些非授權(quán)的SQL代碼,以達到竊取、修改、甚至破壞數(shù)據(jù)庫信息的目的。攻擊者還可以利用SQL注入漏洞繞過用戶認證機制,并完全控制遠程服務(wù)器的數(shù)據(jù)庫。如果程序員在開發(fā)WEB應用程序時,習慣使用用戶輸入的參數(shù)動態(tài)構(gòu)造SQL語句去訪問后臺數(shù)據(jù)庫,將更容易遭到SQL注入攻擊。接下來,通過一個簡單示例來剖析SQL注入原理。

        下面這個SQL語句是Web應用程序典型用來驗證用戶登錄名和密碼的。

        Select * from users where username=’$name’ and password = md5(‘$pwd’);

        其中$name為用戶輸入的用戶名,$pwd為用戶輸入的密碼,后臺Web應用程序使用$name和$pwd兩個參數(shù)構(gòu)建動態(tài)的SQL語句提交到后臺數(shù)據(jù)庫執(zhí)行,根據(jù)返回結(jié)果來判定驗證是否成功。假定用戶輸入的$name為“admin”,$pwd為“disos321!”,那么應用程序就構(gòu)造的SQL語句如下:

        Select * from users where username=’admin’ and password = md5(‘disos321!’);

        如果匹配成功,則數(shù)據(jù)庫返回記錄集,應用程序判定為驗證成功;否則,數(shù)據(jù)庫返回空集,應用程序判定為驗證失敗。上面這個Web登陸驗證是存在SQL注入漏洞的。當攻擊者輸入的$name為“admin’#”,$pwd為任何值(如:“123456”)時,那么Web應用程序構(gòu)建的SQL語句如下:

        Select * from users where username=’admin’#’ and password = md5(‘123456’);

        在mysql數(shù)據(jù)庫的SQL語句中,#是注釋符號,#后面語句將被忽略(有的數(shù)據(jù)庫用--作為注釋符號),因此,用戶按照上面方式輸入用戶名,即使不知道密碼,也能登錄成功,這樣攻擊者便繞過了驗證直接進入系統(tǒng)。

        當然,攻擊者還可以通過MySQL的多語句執(zhí)行功能進一步攻擊,當攻擊者輸入的$name為“update users set password=md5(‘123456’);#”,$pwd為任何值(如:“123456”)時,Web應用程序構(gòu)建的SQL語句為:

        select * from users where username=’admin’;update users set password=md5(‘123456’);#’ and password=md5(‘123456’);

        假設(shè)應用程序使用的數(shù)據(jù)庫用戶具有更新權(quán)限,附加的“update users set password=md5(‘123456’);”語句將會一同被執(zhí)行,這樣應用系統(tǒng)數(shù)據(jù)將被破壞。

        二、SQL注入攻擊過程

        圖1 典型的SQL注入攻擊過程

        如圖1所示,典型的SQL注入攻擊過程可分為五個步驟:

        第一步:SQL注入點探測。探測SQL注入點是關(guān)鍵的一步,通過適當?shù)姆治鰬贸绦?,可以判斷什么地方存在SQL注入點。通常只要帶有輸入提交的動態(tài)網(wǎng)頁,并且動態(tài)網(wǎng)頁訪問數(shù)據(jù)庫,就可能存在SQL注入漏洞。如果程序員信息安全意識不強,采用動態(tài)構(gòu)造SQL語句訪問數(shù)據(jù)庫,并且對用戶的輸入未進行有效性驗證,則存在SQL注入漏洞的可能性很大。一般通過頁面的報錯信息來確定是否存在SQL注入漏洞。

        第二步:收集后臺數(shù)據(jù)庫信息。不同數(shù)據(jù)庫的注入方法、函數(shù)都不盡相同,因此在注入之前,我們先要判斷一下數(shù)據(jù)庫的類型。判斷數(shù)據(jù)庫類型的方法很多,可以輸入特殊字符,如單引號,讓程序返回錯誤信息,我們根據(jù)錯誤信息提示進行判斷;還可以使用特定函數(shù)來判斷,比如輸入“1 and version()>0”,程序返回正常,說明version()函數(shù)被數(shù)據(jù)庫識別并執(zhí)行,而version()函數(shù)是MySQL特有的函數(shù),因此可以推斷后臺數(shù)據(jù)庫為MySQL。

        第三步:猜解用戶名和密碼。數(shù)據(jù)庫中的表和字段命名一般都是有規(guī)律的。通過構(gòu)造特殊SQL語句在數(shù)據(jù)庫中依次猜解出表名、字段名、字段數(shù)、用戶名和密碼。首先通過輸入“and (select count(*) from 表名)<>0”構(gòu)造特殊SQL來猜測后臺數(shù)據(jù)庫可能存在的表;接著通過 “and (select count(列名) from 表名)<>0”來猜解表字段名;再通過“order by 字段序號”來猜解字段數(shù)量;最后通過“and (select count(*) from表名where left(列名,1)=’猜解的字符’)<>0”來猜解用戶名和密碼,如果是查詢顯示的頁面,還可以使用union select聯(lián)合查詢直接獲取用戶名、密碼,比如使用“union select 1,2,user,4,passwd,6 from admin”可以從已經(jīng)猜解出的表名admin和字段名user、passwd獲取用戶名和密碼。這個猜解過程可以借助SQL注入工具(如:sqlmap、Pangolin)快速實現(xiàn),并輕易破譯網(wǎng)站的用戶名和密碼。

        第四步:查找Web后臺管理入口。WEB后臺管理通常不對普通用戶開放,要找到后臺管理的登錄網(wǎng)址,可以利用Web目錄掃描工具(如:wwwscan、AWVS)快速搜索到可能的登錄地址,然后逐一嘗試,便可以找到后臺管理平臺的登錄網(wǎng)址。

        第五步:入侵和破壞。一般后臺管理具有較高權(quán)限和較多的功能,使用前面已破譯的用戶名、密碼成功登錄后臺管理平臺后,就可以任意進行破壞,比如上傳木馬、篡改網(wǎng)頁、修改和竊取信息等,還可以進一步提權(quán),入侵Web服務(wù)器和數(shù)據(jù)庫服務(wù)器。

        三、SQL注入攻擊防護

        通過上面的分析,我們可以歸納出SQL注入攻擊具有五大行為特征:非法輸入、SQL拼接、頻繁測試、越權(quán)執(zhí)行和竊取信息,針對這些行為特征,本文總結(jié)了相應的防范措施如下:

        (1)對于非法輸入,可采用合法性驗證進行規(guī)范。如果Web應用程序在接收到用戶輸入的數(shù)據(jù)后進行合法性檢查再提交數(shù)據(jù)庫執(zhí)行,則能有效防范SQL注入攻擊的發(fā)生。合法性檢查有兩種方式:白名單和黑名單。白名單檢查是指用事先定義好的數(shù)據(jù)規(guī)則來檢查用戶輸入數(shù)據(jù),符合則通過,例如檢查用戶輸入身份證號,是否符合1至17位為數(shù)字、第18為數(shù)字或字母的規(guī)則,如果符合就處理,如果不符合則拒絕,可以采用正則表達式來檢查。黑名單檢查是指通過檢查用戶輸入數(shù)據(jù)中是否包含事先定義好的非法字符系列,符合則拒絕,非法字符系列一般包括select、from、where等SQL關(guān)鍵字。

        (2)對于SQL拼接,可替換成參數(shù)化的SQL來防范。參數(shù)化的SQL操作是最有效的防范SQL注入方法。在where條件個數(shù)明確的情況下,參數(shù)化SQL操作較為簡單。但往往where條件不明確的,需要根據(jù)用戶的選擇作為條件,這種情況就比較復雜,程序員往往就容易采用動態(tài)拼接SQL方式操作數(shù)據(jù)庫,尤其條件非常多的情況下,按照用戶查詢的不同條件,通通過if...else..條件判斷拼接sql語句,導致了sql注入漏洞的產(chǎn)生。針對第二種情況,同樣可以改造成參數(shù)化SQL語句操作。PHP示例代碼如下:

        if (!empty($begin_date) && strlen($begin_date)>0) {#根據(jù)用戶選擇判斷

        array_push($sql_builder," and begin_date >= ?");

        array_push($sql_params,$begin_date);

        }

        $sql="select * from users where 1=1";

        foreach($sql_builder as $k => $v) {

        $sql = $sql . $v; #動態(tài)構(gòu)造參數(shù)化的SQL

        }

        $stmt=$pdo->prepare($sql); #SQL預編譯

        f

        oreach($sql_params as $k => $v) {

        $stmt->bindParam($k+1,$v); #動態(tài)綁定參數(shù)

        }

        $stmt->execute();#執(zhí)行查詢

        while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ #處理返回結(jié)果 }

        (3)對于頻繁測試的行為特征,可通過在應用程序與數(shù)據(jù)庫之間部署數(shù)據(jù)庫防火墻進行檢測與防御。數(shù)據(jù)庫防火墻能識別來自外部的攻擊行為,并通過對SQL語法/詞法中存在的風險進行精確識別,能夠進行細粒度權(quán)限管控、行為審計、監(jiān)測分析等,能在一定范圍內(nèi)發(fā)現(xiàn)和阻止SQL注入攻擊,以防止攻擊者對數(shù)據(jù)庫進行入侵。

        (4)對于越權(quán)執(zhí)行的行為,可通過規(guī)范Web應用程序和數(shù)據(jù)庫授權(quán)加以管控。Web應用程序和數(shù)據(jù)庫運行和使用遵循權(quán)限最小化原則,即使用符合需求的最小權(quán)限的用戶運行Web應用程序和數(shù)據(jù)庫,Web應用程序使用符合需求的最小權(quán)限訪問數(shù)據(jù)庫。Web應用程序和數(shù)據(jù)庫配置的啟動賬戶如果屬于系統(tǒng)管理員組,則攻擊者在獲取Web應用程序和數(shù)據(jù)庫控制權(quán)后就可以方便地用管理員的特權(quán)進行攻擊,從而造成更大的威脅。因此,應該將運行Web應用程序和數(shù)據(jù)庫配置的操作系統(tǒng)賬號配置成最小權(quán)限。同時,應限制Web應用程序和數(shù)據(jù)庫中的一些額外功能的執(zhí)行權(quán)限。比如在MySQL數(shù)據(jù)庫中,應考慮禁用LOCAL INFILE命令,這有助于防止攻擊者通過SQL注入漏洞訪問服務(wù)器本地文件。

        (5)對竊取信息的行為,可以采取信息加密存儲方式進行保護。對用戶名、密碼等敏感信息通過加密處理后再存放在數(shù)據(jù)庫中,即便被攻擊者獲得,也將無法得到有價值的信息。

        四、結(jié)束語

        本文對SQL注入攻擊原理和過程進行詳細、深入分析,歸納出了SQL注入的五大行為特征,并針對每個行為特征提出了相應防護手段,通過這樣多層次、全方位的安全防范,能大大降低SQL注入的風險。但信息安全問題層出不窮,網(wǎng)絡(luò)攻擊手段日新月異,SQL注入漏洞也不例外,不存在百分之百安全的Web應用系統(tǒng)。Web應用開發(fā)人員和維護人員應與時俱進,及時了解新的安全漏洞,掌握新的應對措施,最大限度的保障Web應用系統(tǒng)的安全。

        [1]王希忠等.Web應用程序中SQL注入攻防策略的研究[J].信息安全與技術(shù),2011,(9).

        [2]黃健.計算機信息安全技術(shù)及防護[J].信息安全與技術(shù),2012,(4).

        [3]AnleyC.Advanced SQL injection in SQL server applications[EB/ OL].http: //www. creangel.com/papers/advanced_sql_injection. pdf.

        [4]德丸浩. Web應用安全權(quán)威指南[M].北京:人民郵電出版社.2014 [3]陳小兵, 張漢煜, 駱力明等.

        [5]陳小兵, 張漢煜, 駱力明等.SQL注入攻擊及其防范檢測技術(shù)研究[J]. 計算機工程與應用, 2010,43(11):150-152.

        [6]王溢, 李舟軍, 郭濤.防御代碼注入式攻擊的字面值污染方法[J].計算機研究與發(fā)展, 2012,49(11):2414-2423.

        [7]周淡.SQL注入檢測方法的研究與實現(xiàn)[D]. 西安:西北大學, 2011.

        胡萍(1978-),女,漢族,湖北黃岡人,浙江理工大學科技與藝術(shù)學院現(xiàn)代教育技術(shù)中心,講師。陳志鵬(1978-),男,漢族,福建三明人,中國聯(lián)通杭州市分公司,工程師。

        本文系浙江理工大學科技與藝術(shù)學院2015年度重點課程建設(shè)項目和2015年浙江省高等教育教學改革項目和課堂教學改革項目(項目編號:Kg2015547)的研究成果。

        猜你喜歡
        用戶名后臺攻擊者
        《護士進修雜志》投稿程序
        基于微分博弈的追逃問題最優(yōu)策略設(shè)計
        自動化學報(2021年8期)2021-09-28 07:20:18
        正面迎接批判
        愛你(2018年16期)2018-06-21 03:28:44
        后臺暗戀
        機智的快遞員
        故事會(2017年17期)2017-09-04 17:36:42
        前臺、后臺精彩花絮停不了
        風采童裝(2016年2期)2016-08-02 09:18:38
        有限次重復博弈下的網(wǎng)絡(luò)攻擊行為研究
        電力調(diào)度中后臺監(jiān)控系統(tǒng)的應用
        河南科技(2014年11期)2014-02-27 14:10:03
        后臺
        中國攝影(2013年6期)2013-04-29 21:58:19
        ESET NOD32專家答疑等
        免费a级毛片18以上观看精品| 国产欧美一区二区精品久久久 | 亚洲av无码专区在线| 人与动牲交av免费| 欧美午夜精品一区二区三区电影| 国产精品 高清 尿 小便 嘘嘘| 亚洲国产欧美日韩一区二区| 亚洲av无码片一区二区三区| 久久九九有精品国产尤物 | av二区三区在线观看| 精品精品国产三级av在线| 人妻少妇中文字幕在线观看| 久人人爽人人爽人人片av| 亚洲欧美一区二区三区在线| 成年女人毛片免费观看97| 无遮挡中文毛片免费观看| 蜜桃一区二区免费视频观看| av国产自拍在线观看| 一个色综合中文字幕人妻激情视频| 亚洲av无码国产精品永久一区| 无码av免费精品一区二区三区 | 国产精品一区2区三区| 国产精品三级1区2区3区| 一本色道久久88加勒比综合| 2021国产精品视频网站| 蜜桃av抽搐高潮一区二区| 婷婷成人亚洲| 国产精品欧美亚洲韩国日本| 一区二区国产视频在线| 日韩少妇人妻中文视频| 在线观看视频播放| 国产精品jizz观看| 一级一片内射在线播放| 国99精品无码一区二区三区| 亚洲av午夜国产精品无码中文字 | 日韩中文在线视频| 蜜臀av人妻一区二区三区| 一区二区三区乱码专区| 亚洲欧美日韩综合一区二区| 成人综合婷婷国产精品久久蜜臀| 无码毛片aaa在线|