999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2016-10-20 11:02:54張學義鐘志宏
華僑大學學報(自然科學版) 2016年5期
關鍵詞:程序設置數據庫

張學義, 鐘志宏

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

?

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

張學義, 鐘志宏

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

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

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

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

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

程序中,SQL 注入很大的原因在于編碼和代碼存在問題,其主要原因是在編寫代碼的過程中,對代碼完善性的考慮欠周、簡潔性及安全性的結果,從而導致腳本程序被入侵者破壞[2].從入侵者方面出發,SQL 注入可以加強防御,所構成的防火墻夠堅固,才可以避開防火墻的阻擋,這個操作十分容易,且能夠實現訪問修改數據庫的功能.

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

var User Name;

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

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

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

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

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

2 實例分析

2.1基于ASP.NET+SQL Server的網站攻擊實例解析

采用后臺登陸窗口的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 (用戶名或其對應的密碼不正確)

〈/script〉”);

else

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

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

select*from administrators where name=‘ad-ministrator’ and pasword=‘654321’

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

select * from administrators where name=‘haha’OR 3<4 --‘and password’=‘456’

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

表1 用戶信息表

2.2數據更新時的SQL注入

首先,假設與后臺數據庫內部存在表users,其結構如表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處輸入數據庫的連接對象,其中“password”是數據庫的新密碼,這個密碼在未操作的情況下反饋到數據庫并進行動作后,若登錄賬戶xiaogang填寫的密碼是‘789’,level=‘9’,轉換成SQL語句并發送到數據庫為:update users set password=‘789’,level=‘9’ where name=‘xiaogang’.這樣的話,原來普通用戶xiaogang就變更成管理員.

3 ASP.NET網站SQL注入防范

3.1SQL注入的防范措施

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

1) 測試輸入內容.程序員測試輸入內容的數據大小及類型,強制執行輸入內容的限制.會產生異常通常是因為輸入了不符合要求的內容.

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

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

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

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

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

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

3.2SQL注入的防范策略

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

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

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

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

4 結論

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

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

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

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

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

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

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

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

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

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

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

[10]陳柏生,吳可沾,楊育輝.互聯網用戶安全登錄平臺設計[J].華僑大學學報(自然科學版),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

張學義(1970-),男,副教授,主要從事計算機網絡、信息系統開發的研究.E-mail:zxydygz@163.com.

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

TP 309.1

A

1000-5013(2016)05-0633-04

猜你喜歡
程序設置數據庫
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 中日韩一区二区三区中文免费视频| 在线播放91| 永久天堂网Av| 青青草一区| 波多野结衣亚洲一区| 久久精品一品道久久精品| 国产成人亚洲精品色欲AV| 亚洲AV无码久久精品色欲| 97色伦色在线综合视频| 欧美19综合中文字幕| 3p叠罗汉国产精品久久| 四虎永久在线| av午夜福利一片免费看| 亚洲一区二区精品无码久久久| 波多野结衣AV无码久久一区| 欧美.成人.综合在线| 成人在线视频一区| 午夜久久影院| 伊人大杳蕉中文无码| 福利在线不卡| 欧美在线免费| 大陆精大陆国产国语精品1024| AV熟女乱| 国产亚洲精| 男女性色大片免费网站| 全裸无码专区| 亚洲美女操| 久久天天躁夜夜躁狠狠| 日韩在线1| 亚洲人成网址| 国产麻豆aⅴ精品无码| 三级国产在线观看| 国产精品污视频| 亚洲一区二区在线无码 | 国产手机在线观看| 99这里只有精品6| 中文字幕在线播放不卡| 99久久国产自偷自偷免费一区| 日本尹人综合香蕉在线观看| 97在线碰| 国产另类乱子伦精品免费女| 国产成人在线无码免费视频| 午夜性刺激在线观看免费| 一本无码在线观看| 免费日韩在线视频| 99热这里只有精品在线播放| 国产美女91呻吟求| 欧美成人手机在线观看网址| 欧美日韩另类在线| 亚洲综合18p| 三区在线视频| 自拍偷拍欧美日韩| 孕妇高潮太爽了在线观看免费| 国产人人射| 亚卅精品无码久久毛片乌克兰 | 热久久综合这里只有精品电影| 亚洲全网成人资源在线观看| 免费人成视网站在线不卡| 99久久精品免费看国产免费软件| 久久天天躁狠狠躁夜夜2020一| 亚洲AⅤ永久无码精品毛片| 91视频青青草| 日韩视频福利| 暴力调教一区二区三区| 欧美国产精品不卡在线观看 | 91久久夜色精品| 国产不卡一级毛片视频| 99re热精品视频国产免费| 国产精品福利社| 国产在线拍偷自揄观看视频网站| 日韩欧美高清视频| 成年人国产视频| 国产对白刺激真实精品91| 久久国产精品影院| 高清乱码精品福利在线视频| 国产精鲁鲁网在线视频| 国产69精品久久| 欧美一级一级做性视频| 国产美女无遮挡免费视频| 中日韩欧亚无码视频| 国产青榴视频| 国产亚洲视频免费播放|