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

        ?

        ASP.NET的SQL注入攻擊及防御

        2016-10-20 11:02:54張學(xué)義鐘志宏
        關(guān)鍵詞:程序設(shè)置數(shù)據(jù)庫

        張學(xué)義, 鐘志宏

        (黔南民族師范學(xué)院 計算機與信息學(xué)院, 貴州 都勻 558000)

        ?

        ASP.NET的SQL注入攻擊及防御

        張學(xué)義, 鐘志宏

        (黔南民族師范學(xué)院 計算機與信息學(xué)院, 貴州 都勻 558000)

        研究ASP.NET網(wǎng)站的SQL注入攻擊的成因、攻擊距離,通過實例說明ASP.NET程序中的SQL注入攻擊方式.研究表明:要防范SQL注入,最重要的就是要做好危險字符驗證的程序、異常編碼的處理,屏敝錯誤信息,并從代碼安全上進行阻止,如設(shè)置可靠的SQL參數(shù)、給數(shù)據(jù)進行加密處理、查驗用戶信息、設(shè)置存儲路徑和設(shè)置安全措施等,從而加強ASP.NET網(wǎng)站的性能和安全,避免SQL注入攻擊的實現(xiàn).

        ASP.NET; SQL注入攻擊; 防御技術(shù); 異常編碼; 代碼安全

        互聯(lián)網(wǎng)技術(shù)的擴拓總是伴隨著網(wǎng)絡(luò)安全問題,以ASP.NET語言為基點Web應(yīng)用程序的數(shù)量在不斷攀升,隨之而來的網(wǎng)絡(luò)安全破壞(攻擊力)也更大了.很多網(wǎng)站程序員在編寫ASP.NET網(wǎng)站程序時,并沒有對用戶輸入的數(shù)據(jù)進行檢驗性測試,或者網(wǎng)站數(shù)據(jù)庫自身存在一些比較大的安全漏洞,以及網(wǎng)站的防火墻并沒有能夠識別外部攻擊.SQL注入是目前ASP系統(tǒng)中存在最多的一種安全漏洞.SQL注入攻擊是指攻擊者通過修改原有數(shù)據(jù)庫的數(shù)據(jù)和參數(shù),使系統(tǒng)識別不出非法入侵,這種找漏洞進入的入侵常被稱為漏洞攻擊,它會對程序數(shù)據(jù)庫語句執(zhí)行造成打擊[1].本文對ASP.NET網(wǎng)站的SQL注入攻擊進行攻擊,并提出相應(yīng)的防范措施.

        1 SQL注入的原因及攻擊遠離

        程序中,SQL 注入很大的原因在于編碼和代碼存在問題,其主要原因是在編寫代碼的過程中,對代碼完善性的考慮欠周、簡潔性及安全性的結(jié)果,從而導(dǎo)致腳本程序被入侵者破壞[2].從入侵者方面出發(fā),SQL 注入可以加強防御,所構(gòu)成的防火墻夠堅固,才可以避開防火墻的阻擋,這個操作十分容易,且能夠?qū)崿F(xiàn)訪問修改數(shù)據(jù)庫的功能.

        SQL注入攻擊產(chǎn)生的一個重要的環(huán)境,是輸入鍵值打造的動態(tài)SQL語句經(jīng)過Web應(yīng)用程序進行數(shù)據(jù)庫操作.如果編寫的代碼要使用存儲的這一過程,那么,這些存儲過程將作為用戶輸入的輸入內(nèi)容傳遞,SQL注入在這樣的情況下也容易出現(xiàn).舉一個常見的SQL注入攻擊例子進行說明,所描述內(nèi)容采用了用戶輸入字符串和拼接查詢字符串進行SQL的查詢[3-4]:

        var User Name;

        User Name=Raquest. form(“User Name”)

        var sql=“select*from Users where User Name=‘“+User Name+”’”;

        使用者根據(jù)暗示內(nèi)容填寫一個用戶名稱,如填寫“xiaoming”這幾個字節(jié)時,輸出的結(jié)果就是:SELECT* FROM Users WHERE UserName=‘xiaoming’.這時,腳本會執(zhí)行下面查詢:

        SELECT*FROM Users WHERE User Name=‘xiaoming’;droptable Users--

        其中:分號(;)為前面完成與后面查詢的開端;“--”為對前面的內(nèi)容進行解釋,基本上理解前面的內(nèi)容,字符后面的內(nèi)容可以不計.代碼改正后,如果沒有出現(xiàn)問題,服務(wù)器就會直接操作,而SQL Server 操作本語句就會進行查看,并對Users進行清除的行為,這樣一來,將會產(chǎn)生不可估量的問題.

        2 實例分析

        2.1基于ASP.NET+SQL Server的網(wǎng)站攻擊實例解析

        采用后臺登陸窗口的SQL注入后臺窗口代碼[5]:

        string sqlstr=“select*from administrators

        where name=‘“+name+”’and password=‘“+psaa-word+”’”;

        Sql Command comm=new SqlCommand(strsql,conn);

        OleDbDataReader dr=comm. Execute Reader();

        if (!dr.Read())

        Response. Write (“〈script〉 alert (用戶名或其對應(yīng)的密碼不正確)

        〈/script〉”);

        else

        Response.Write (“〈script〉 alert (成功登錄)〈/script〉”);

        其中:conn為數(shù)據(jù)庫連接的對象;pass-word為密碼;name為使用者昵稱或名字.若以administrator作為操作管理的名字,pass-word設(shè)置為654321,則數(shù)據(jù)庫接收到來自ASP.NET 應(yīng)用的SQL 語句為:

        select*from administrators where name=‘a(chǎn)d-ministrator’ and pasword=‘654321’

        由此可以在數(shù)據(jù)庫中找到一條符合的數(shù)據(jù),能直接登上賬號.如果用戶輸入的用戶名為‘haha’OR 3<4--,密碼為456 ,那么,ASP.NET應(yīng)用發(fā)送給數(shù)據(jù)庫服務(wù)器的SQL語句為

        select * from administrators where name=‘haha’OR 3<4 --‘a(chǎn)nd password’=‘456’

        前面說到“--”是解釋內(nèi)容的,那么,3<4 恒為真,OR運算中兩個數(shù)據(jù)只要一個是對的,另外一個也是對的.按照這樣的方式,前面的SQL 語句where以后的條件成立,那么dr.read()返回的結(jié)果和ad-ministrators表就是正確的,意味著可以登錄.這種方式是登錄賬戶及密碼都是直接操作的一種手段.另外,也有一些不同的操作方法,但是其原理都相同,只需要令dr.read()返回“真”的結(jié)果就可以.

        表1 用戶信息表

        2.2數(shù)據(jù)更新時的SQL注入

        首先,假設(shè)與后臺數(shù)據(jù)庫內(nèi)部存在表users,其結(jié)構(gòu)如表1所示.表1中:用戶名用name表示;密碼用password表示;用戶等級用level表示,1表示管理員,2 表示正常用戶.當普通用戶更新密碼時,代碼[6]如下:

        ?

        strin strsql=“update users set pass-word=‘“+password+”’where name=‘“+name+”’”;

        OleDbCommand comm=new OleDbCommand(strsql,conn);

        comm. Execute Non Query();

        ?

        在conn處輸入數(shù)據(jù)庫的連接對象,其中“password”是數(shù)據(jù)庫的新密碼,這個密碼在未操作的情況下反饋到數(shù)據(jù)庫并進行動作后,若登錄賬戶xiaogang填寫的密碼是‘789’,level=‘9’,轉(zhuǎn)換成SQL語句并發(fā)送到數(shù)據(jù)庫為:update users set password=‘789’,level=‘9’ where name=‘xiaogang’.這樣的話,原來普通用戶xiaogang就變更成管理員.

        3 ASP.NET網(wǎng)站SQL注入防范

        3.1SQL注入的防范措施

        針對SQL的實現(xiàn)經(jīng)過、實現(xiàn)理論和加入攻擊的特性制定相應(yīng)的抵御方法,從代碼安全上進行阻止,如設(shè)置可靠的SQL參數(shù)、給數(shù)據(jù)進行加密處理、查驗用戶信息、設(shè)置存儲路徑和設(shè)置安全措施.ASP.NET網(wǎng)站通過上述抵御方法,可以有效地加強其性能和安全,避免SQL注入攻擊的實現(xiàn)[7-10].

        1) 測試輸入內(nèi)容.程序員測試輸入內(nèi)容的數(shù)據(jù)大小及類型,強制執(zhí)行輸入內(nèi)容的限制.會產(chǎn)生異常通常是因為輸入了不符合要求的內(nèi)容.

        2) 測試字符串變量的內(nèi)容.只輸入允許測試的數(shù)據(jù)后,才能對字符串變量進行檢測.通常不被允許檢測的數(shù)據(jù),有以0和1構(gòu)成的二進制字符串,“:”(查詢分隔符),“/*…*/”和“-”等注釋符號,“’”(字符串分隔符號),以及由“”開始的轉(zhuǎn)義序列字符.

        3) 采用存儲過程的方式.當對數(shù)據(jù)庫進行程序訪問時,設(shè)置存儲路徑必須通過參數(shù)進行錄入,并且盡可能存儲路徑的形式訪問數(shù)據(jù)庫.在設(shè)置T-SQL程序代碼的儲存路徑時,要盡可能使用靜態(tài)SQL,而非動態(tài)SQL.當使用動態(tài)SQL時,輸入的參數(shù)不能是具有關(guān)鍵字、列名和表名的SQL語句或者是其中的一部分,必須是能夠建立動態(tài)SQL的數(shù)值.在訪問過程中,嚴禁直接接入SQL后exec執(zhí)行,而應(yīng)該通過p_executesql和它的形參參數(shù)進行訪問.當使用靜態(tài)SQL時,可以自動偵測輸入代表安全代碼的安全字符后,并且自動進行防御攻擊.長度檢查特性和類型驗證特性存在于SQL Server的Parameters集合中.在使用Parameters集合的過程中,長度檢查特性和類型驗證特性會將可操作代碼視為文字,并對不屬于該范圍的數(shù)據(jù)進行報警處理.

        4) 加強安全性.安全種類的SQL參數(shù)在使用程序的拼接語句的過程中,能夠有效提高其安全穩(wěn)定性.因為一部分因素的影響,導(dǎo)致在訪問數(shù)據(jù)庫時,程序不可以按照設(shè)置的存儲路徑進行.所以,通過安全種類的SQL參數(shù),才可以對具有拼接SQL語句的程序進行訪問.

        5) 對敏感數(shù)據(jù)進行加密存儲.用戶對敏感數(shù)據(jù)進行保存時,實施加密用戶輸入的數(shù)據(jù)并檢測輸入數(shù)據(jù)的內(nèi)容的安全性.以存儲在數(shù)據(jù)庫內(nèi)的數(shù)據(jù)為基礎(chǔ)對比加密后的敏感數(shù)據(jù),就會發(fā)現(xiàn)和之前已經(jīng)保存過的數(shù)據(jù)不同,經(jīng)過用戶加密后的敏感數(shù)據(jù)能夠更加有效地制止SQL的注入攻擊.System.WEB.Security.FormsAuthentication加密方式在ASP.NET集成環(huán)境中,更易于加密數(shù)據(jù).

        6) 禁止將服務(wù)器端錯誤消息返回給頁面瀏覽者.程序設(shè)計人員可以利用已經(jīng)在程序內(nèi)設(shè)置的數(shù)據(jù)為基礎(chǔ),在操作WEB程序產(chǎn)生問題時發(fā)現(xiàn)起因,并表明嚴禁數(shù)據(jù)庫中的數(shù)據(jù)外泄,指向系統(tǒng)顯示錯誤界面.比如,對ASP.Net中的配置文件(WEB.config)進行設(shè)置:〈custom Errors mode=“Remote Only” default Redirect=“errors.htm”/〉.設(shè)置完成后,將一致顯示“errors.htm”的自定義的用戶界面,而不再顯示如源文件存儲位置、源錯誤位置等具體的原因.

        7) 安全部署網(wǎng)站系統(tǒng).a) 數(shù)據(jù)庫服務(wù)應(yīng)部署在專用的物理服務(wù)器上,而Web應(yīng)用程序則不同,其必須要在多重的物理服務(wù)器上進行部署.因此,可以利用交換設(shè)備的訪問控制機制或者防火墻,有效地抵制存儲于數(shù)據(jù)庫服務(wù)器內(nèi)的數(shù)據(jù)包傳輸至互聯(lián)網(wǎng)的行為.在現(xiàn)實數(shù)據(jù)訪問中,既可以通過將Web程序與數(shù)據(jù)庫數(shù)據(jù)分區(qū)存放進行實現(xiàn),也可以通過分別設(shè)置Web程序和數(shù)據(jù)庫存儲進行實現(xiàn).b) NTFS格式應(yīng)作為服務(wù)器分區(qū)的唯一格式,以最小權(quán)限為基本原則,合理配置Web程序權(quán)限和數(shù)據(jù)庫數(shù)據(jù)權(quán)限.c) WEB應(yīng)用程序訪問數(shù)據(jù)庫時,應(yīng)使用具有指定權(quán)限的數(shù)據(jù)庫賬號.d) 使網(wǎng)絡(luò)環(huán)境更加可靠、安全和Web 應(yīng)用程序更加安全健康.應(yīng)用層安全的基礎(chǔ)是物理層和網(wǎng)絡(luò)層的安全,所以在保障網(wǎng)站本身安全可靠的同時,要注重設(shè)備檢測由程序輸入的不安全字符和防火墻的合理化,以及定期對服務(wù)器的執(zhí)行系統(tǒng)產(chǎn)生的補丁進行修補.

        3.2SQL注入的防范策略

        1) 嚴格篩選用戶錄入的數(shù)據(jù)和上交的參數(shù).在對Web 頁面進行設(shè)計時,對數(shù)值型參數(shù),要對其是否包含非法字符進行判斷,要嚴格篩選含有分號、雙引號、單引號和逗號等標點符號的字符型參數(shù);當一同出現(xiàn)多個字符串,如select,delete,*,from,union等,也不能消除警惕,應(yīng)以用戶錄入?yún)?shù)的長短為依據(jù),檢查是否為合法程序,如果不是合法代碼,就對其進行錯誤警示.

        2) 設(shè)置數(shù)據(jù)庫服務(wù)器的權(quán)限.在Web界面連接數(shù)據(jù)庫的時候,盡可能不使用超級管理員身份.一般情況下,不允許Web頁面干涉系統(tǒng)的存儲方式和系統(tǒng)表的讀取方式,即使是戶表,對權(quán)限設(shè)置也要慎重考慮,對只需要讀操作權(quán)限的用戶,不給予插入、更新等權(quán)限.

        3) 將不重要的交互式提交表格頁面進行關(guān)閉或刪除.在編寫代碼的過程中,程序員屏蔽掉代碼層內(nèi)常見的危險字符,這樣就可以阻止或者屏蔽一些簡單的網(wǎng)站注入攻擊.

        4) 作為網(wǎng)站管理員,要及時打補丁并強化數(shù)據(jù).應(yīng)定期、及時地通過相關(guān)設(shè)施和器具檢查Web頁面收到的攻擊,實施監(jiān)測數(shù)據(jù)庫運行情況,禁止一切無用的功能和服務(wù).

        4 結(jié)論

        對于SQL注入漏洞的檢測條件是有限制的,檢測效果重點在于代碼覆蓋率.通常情況下,會采用黑盒測試技術(shù)進行客戶端SQL注入漏洞檢測技術(shù),當然檢測效果也是取決于所建立檢測漏洞模型是否準確,同時,也需要原代碼給予一定的支持,如服務(wù)器端源代碼的靜態(tài)檢測技術(shù)和動態(tài)檢測技術(shù),及兩種檢測技術(shù)相結(jié)合共同檢測.但是污點跟蹤技術(shù)是在發(fā)現(xiàn)SQL注入漏洞之后,而且也只是會終止進程或是發(fā)出報警,無法對抗利用漏洞發(fā)起的拒絕服務(wù)攻擊,而綜合檢測技術(shù)無法追蹤漏洞的位置和起因等,它只是提供安全部署的框架.

        ASP.NET網(wǎng)站開發(fā)的信息系統(tǒng)被入侵,是因為代碼存在的問題被入侵者發(fā)現(xiàn).因此,當程序員在編寫程序時,首先,檢測對客戶端提交的變量參數(shù)和字符變量參數(shù);然后,根據(jù)以下6點防御SQL注入的攻擊.1) 通過類安全的參數(shù)代碼機制打造動態(tài)SQL語句.2) 簡短單表輸入和查閱字符會降低有害代碼強行SQL命令的頻率.3) 檢測填寫的權(quán)限問題,保證填寫的數(shù)據(jù)是可用的,同時,通過客戶端和服務(wù)器端的雙向驗證實現(xiàn)更嚴格的訪問控制.4) 代碼設(shè)置前先做評定,脆弱敏感的信息加上密碼后再放置到數(shù)據(jù)庫中,對比填寫的密碼是否和數(shù)據(jù)庫一致,沒有針對性意義的數(shù)據(jù)沒事,有針對性的則要進行防范.5) 對返回數(shù)據(jù)進行檢測,超過的記錄都按照出錯來進行處理.6) 操作者的權(quán)限放置到最基本要求.

        [1]馬凱,蔡皖東,姚燁.Web 2.0環(huán)境下SQL注入漏洞注入點提取方法[J].計算機技術(shù)與發(fā)展,2013,23(3):121-124,128.

        [2]丁允超,范小花.SQL注入攻擊原理及其防范措施[J].重慶科技學(xué)院學(xué)報(自然科學(xué)版),2012,14(5):136-139.

        [3]石聰聰,張濤,余勇,等.一種新的SQL注入防護方法的研究與實現(xiàn)[J].計算機科學(xué),2012(增刊1):60-64.

        [4]王偉平,李昌,段桂華.基于正則表示的SQL注入過濾模塊設(shè)計[J].計算機工程,2011,37(5):158-160.

        [5]周益宏,陳建勛.淺析基于ASP.NET的網(wǎng)站SQL注入攻擊及防范措施[J].計算機安全,2010(6):93-95.

        [6]王云,郭外萍,陳承歡.Web項目中的SQL注入問題研究與防范方法[J].計算機工程與設(shè)計,2010,31(5):976-978.

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

        [8]竺霞芳.雙層防御SQL注入攻擊的方法[D].武漢:華中科技大學(xué),2011:32-38.

        [9]劉合葉.多功能SQL注入檢測系統(tǒng)的實現(xiàn)及攻擊防范方法研究[D].北京:北京交通大學(xué),2009:48-52.

        [10]陳柏生,吳可沾,楊育輝.互聯(lián)網(wǎng)用戶安全登錄平臺設(shè)計[J].華僑大學(xué)學(xué)報(自然科學(xué)版),2011,32(6):638-640.

        (責任編輯: 黃曉楠 英文審校: 吳逢鐵)

        SQL Injection Attacks and Defense Based on ASP.NET

        ZHANG Xueyi, ZHONG Zhihong

        (School of Computer and Information, Qiannan Normal University for Nationalities, Duyun 558000, China)

        This paper research the causes and attack distance of SQL injection attacks, and illustrates through examples the SQL injection attack methods in on the ASP.NET program. The research shows that hazard character verification and abnormalites codes handling are the most important to prevent SQL injection. By using keywords shield, SQL parameter optimization, data encryption, user information check, storage path setting, and implement safety measures can improve the security of ASP.NET website and effectively prevent SQL injection attacks.

        ASP.NET; SQL injection attack; defense technology; extraordinary code; code security

        10.11830/ISSN.1000-5013.201605021

        2016-01-20

        張學(xué)義(1970-),男,副教授,主要從事計算機網(wǎng)絡(luò)、信息系統(tǒng)開發(fā)的研究.E-mail:zxydygz@163.com.

        貴州省普通高等學(xué)校地方民族文化數(shù)字化應(yīng)用工程中心開放基金項目資助(qnsy2014gc02)

        TP 309.1

        A

        1000-5013(2016)05-0633-04

        猜你喜歡
        程序設(shè)置數(shù)據(jù)庫
        中隊崗位該如何設(shè)置
        少先隊活動(2021年4期)2021-07-23 01:46:22
        試論我國未決羈押程序的立法完善
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        本刊欄目設(shè)置說明
        中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
        久久久亚洲精品蜜臀av| 激情内射亚州一区二区三区爱妻| 免费一级毛片在线播放不收费| 成人国产精品高清在线观看| 久久久国产熟女综合一区二区三区| 欧美老熟妇乱子| 无码精品国产va在线观看| 99久久精品一区二区三区蜜臀 | 亚洲一区二区三区熟妇| 无码人妻久久一区二区三区蜜桃| 国产av电影区二区三区曰曰骚网| 亚洲国产一区二区三区最新| 国产高清不卡二区三区在线观看 | 中文无码制服丝袜人妻av| www.av在线.com| 日本一区二区三区不卡在线| 三a级做爰片免费观看| 久久精品日韩av无码| 国产人成视频免费在线观看| 风骚人妻一区二区三区| 粉嫩被粗大进进出出视频| 国产自产精品露脸刺激91在线 | 人妻少妇乱子伦精品无码专区电影| 男女真实有遮挡xx00动态图| 成人女同av免费观看| 国产自拍视频在线观看网站| 国产精品_国产精品_k频道| 性做久久久久久久| 久久久黄色大片免费看| 国精品人妻无码一区二区三区性色| 推油少妇久久99久久99久久| 国产小视频一区二区三区| 日韩有码中文字幕在线观看| 亚洲精品美女久久久久99| 国产在线一区二区三区av| 亚洲av色香蕉一区二区三区潮| 蜜臀av色欲a片无码精品一区| 国产目拍亚洲精品一区二区| 国产成人夜色在线视频观看| 超碰国产精品久久国产精品99| 中文字幕亚洲情99在线|