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

WEB系統中SQL注入防御方法的研究

2015-03-31 16:05:00焦玉華
大眾科技 2015年4期
關鍵詞:程序設置數據庫

焦玉華

(山東工商學院,山東 煙臺 264005)

WEB系統中SQL注入防御方法的研究

焦玉華

(山東工商學院,山東 煙臺 264005)

SQL注入風險已成為WEB應用最大的安全隱患之一,通過介紹SQL注入的本質及特點,詳細分析了SQL注入的一般思路和實現方法,最后從服務器IIS設置、數據庫設置和程序編寫三個方面提出了針對SQL注入的防御措施。

網絡安全;SQL注入攻擊;SQL注入點

1 引言

隨著WEB技術的迅速發展,基于B/S結構的WEB應用得到了廣泛的普及,涉及到教育、金融、社交等多個領域,這使得其安全問題備受關注。在OWASP(開放式web應用程序安全項目)研究公布的WEB應用程序最可能、最常見、最危險的十大安全隱患中,SQL注入風險位居前列,并因其普遍程度高,危害程度大,成為目前主要的WEB應用攻擊方法之一。本文以ASP+SqlServer為例,介紹SQL注入的過程和防御方法。

2 SQL注入概述

2.1SQL注入的本質

SQL注入攻擊就其本質而言,就是攻擊者利用SQL語法的特點,針對應用程序開發者編程過程中沒有對用戶的輸入數據進行合法性驗證的漏洞,向應用程序中插入一些SQL語句來實現對數據庫未經授權的訪問和檢索,根據WEB頁面返回的結果,獲得自己想要的數據。

2.2SQL注入的特點

(1)攻擊的廣泛性。由于SQL注入是利用的SQL語法,因此在理論上講,只要支持SQL語言標準的數據庫軟件都有可能受到SQL注入的攻擊,例如MS Sql Server、Mysql、Oracle、DB2等。

(2)技術門檻低。SQL注入的原理相對簡單,易于掌握和實施。只要有SQL語法基礎的人都可以進行SQL注入攻擊,同時還有很多專門的SQL注入工具,例如SQLMAP、HDSI,這樣即使完全不懂編程、不懂 SQL語法的人的都可以進行SQL注入攻擊。

(3)隱蔽性強。SQL注入攻擊是通過正常的WWW端口訪問數據庫,語法結構也是正確的SQL語句,與正常的頁面訪問完全一樣,因此這種攻擊可以順利地越過防火墻而不被發現。

3 SQL注入的實現

SQL注入的一般思路是首先判斷 WEB應用是否存在SQL注入漏洞,即尋找注入點,判斷后臺數據庫類型,再確定XP_CMDSHELL可執行情況,進一步發現WEB虛擬目錄,最后上傳ASP木馬,得到管理員權限。

3.1查找SQL注入點

HTTP協議的請求方法中,常用到GET和POST兩種。GET方法是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,從服務器上獲取數據。POST方法將表單內各個字段與其內容放置在 HTML HEADER內一起傳送到ACTION屬性所指的URL地址,是向服務器傳送數據。SQL注入點最可能出現的地方就是使用GET和POST方法與服務器交換數據的地方。常用的手工查找SQL注入點的方法有以下兩種:“加單引號”法 和“1=1、1=2”法。

3.2利用SQL注入點進行注入攻擊

下面以用戶登錄驗證模塊為例,說明SQL注入攻擊的實施過程。在登錄驗證的程序中,通常用的SQL語句為:select * from usertable where username=‘admin’and password=’123’。如果攻擊者以“admin’or 1=1 --”作為用戶名輸入時,SQL語句變為:select * from usertable where username=‘admin’or 1=1 -- and password=’123’,“--”在SQL語法中是注釋符,其后面的語句都會被注釋掉,不會被執行,而“or 1=1”恒為真,這使得 where條件判斷也恒為真,攻擊者就可以跳過用戶驗證順利進入系統。

4 SQL注入的防御方法

針對SQL注入攻擊的本質和實現方法,從服務器IIS設置、數據庫設置和程序編寫三個方面分析如何防御SQL注入。

4.1服務器IIS設置

程序員在編寫或調試程序時,IIS會把詳細的代碼錯誤信息反映在WEB頁面中,讓程序員能夠迅速的發現程序的問題所在,而攻擊者恰恰也可以利用這個錯誤信息發現系統的漏洞。因此在WEB系統發布后,在IIS的配置調試選項卡中,選擇“向客戶端發送下列文本錯誤信息(T)”選項,定義一個統一固定的錯誤提示,替代詳細的錯誤提示,這樣可以在一定程度上減少注入試探。

4.2數據庫設置

猜測表名、字段名也是SQL注入的一種方法,因此在數據庫的命名上要做到標準規范,避免用 admin、username、password等常見詞作為表名或字段名。WEB應用連接數據庫時,要遵循“最小權限準則”,堅決不能用sa權限的用戶連接數據庫,對表的select、update、delete操作權限要做精確的設置。

4.3程序編寫

程序員編寫程序時不規范、不嚴謹,是 WEB應用存在SQL注入點的主要原因,應該從以下四個方面去規范程序編寫,減少系統漏洞。

4.3.1對用戶的輸入進行合法性驗證

(1)限定用戶輸入的字符串長度。這個方法簡單易操作,可以有效地防止攻擊者構造較長SQL語句插入到WEB應用中。可以通用設置文本字段的 maxlength屬性來實現,也可以通過函數len()進行判斷。

(2)屏蔽或替換特殊的符號。在SQL注入中,單引號、括號、注釋符號、空格、雙引號等都是常用的特殊符號,可以根據實際情況將這些特殊符號屏蔽掉,也可以用replace()替換成全角或中文符號,使惡意的SQL語句無法插入到系統中。

(3)對系統的輸入要求做專門驗證。

在WEB應用的輸入設計中,對有些輸入的內容要求比較具體,例如只允許輸入數字、字母、漢字或者它們的組合等,可以利用或者構造相應的函數去驗證,我們以只允許輸入數字為例:通過IsNumeric()或者ASC()判斷ASCII碼值來確定輸入是否為數字,也可以利用正則表達式“^[0-9]+$”來判斷。

4.3.2使用參數化查詢

部分程序員在編寫程序時,為了省時省力,以字符串拼接的方式構建SQL語句,導致系統中存在SQL注入隱患,而參數化查詢是目前最有效的預防SQL注入攻擊的方法。參數化查詢是指程序鏈接并訪問數據庫時,在需要填入數據的地方,使用參數來賦值。在使用參數化查詢的情況下,數據庫不會將參數的內容當做SQL指令的一部份來執行,而是先進行SQL 指令的編譯,再套用參數執行,這樣即使參數中含有惡意的指令,也不會被數據庫執行。同樣以登錄驗證為例,使用參數化查詢來實現:

dim rs,cmd,cn

set cmd=server.CreateObject("adodb.command")

set cn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

cn.Open"DRIVER={SQL Server};SERVER=服務器;UID=用戶名;PWD=密碼;

DATABASE=數據庫"

cmd.activeconnection=cn

cmd.commandtext="select*fromusertablewhere username=? and password=?"

cmd.commandtype=1

cmd.prepared=true

cmd.parameters.append

cmd.createparameter("username",adVarChar,

adparaminput,10)

cmd.parameters.append

cmd.createparameter("password",adVarChar,

adparaminput,10)

cmd.parameters("username")=request.form("username")

cmd.parameters("password")=request.form("password")

rs=cmd.execute

在程序編寫中,除了上述方法,還可以對數據庫的重要數據進行MD5加密,記錄跟蹤攻擊者的IP和攻擊行為,利用專門的掃描工具查找系統的注入漏洞。

5 結語

SQL注入攻擊是攻擊者廣泛使用的一種攻擊手段,嚴重威脅著應用程序的安全。因此,WEB應用的開發人員和維護人員必須要掌握SQL注入攻擊的常用方法和防御措施,在程序開發時要合理設計,規范編程,盡量完善代碼避免漏洞,這樣才能保護系統的安全,遠離SQL注入攻擊的危害。

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

[2] 陳遜.SQL注入攻擊原理與防范[J].電腦知識與技術,2008,(3):12.

[3] 黃明輝.基于SQL Server的SQL注入攻擊防范方法[J].計算機安全,2008,(8):122-124.

The study of WEB SQL injection defense system method

SQL injection risk has become one of the biggest security risks WEB application, the nature and characteristics through the introduction of SQL injection, a detailed analysis of the general ideas and methods SQL injection, and finally write IIS settings from the server, database settings and procedures for the three areas the defense against SQL injection.

Network security; SQL injection attacks; SQL injection point

TP393.08

A

1008-1151(2015)04-0003-02

2015-03-13

山東工商學院青年科研基金項目(2012QN203)。

焦玉華(1979-),男,河南衛輝人,山東工商學院工程師,研究方向為教學管理。

猜你喜歡
程序設置數據庫
中隊崗位該如何設置
少先隊活動(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
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 国产乱子伦视频在线播放| 福利一区在线| 国模视频一区二区| 中日韩一区二区三区中文免费视频| 一级毛片基地| 99ri国产在线| 久久成人国产精品免费软件| 亚洲精品第1页| 好吊日免费视频| 国产aⅴ无码专区亚洲av综合网 | 一本久道久综合久久鬼色| 免费一级成人毛片| 亚洲视频免费在线看| 夜夜操天天摸| 欧美日韩国产成人高清视频| 精品久久久久成人码免费动漫| 老汉色老汉首页a亚洲| 国产精品无码AV片在线观看播放| 在线观看视频99| 日韩高清一区 | 日韩欧美中文字幕在线韩免费| 自拍欧美亚洲| 国产精品无码影视久久久久久久| 天天综合网色中文字幕| 免费看久久精品99| 在线一级毛片| 久久久波多野结衣av一区二区| 2020国产精品视频| 99精品视频在线观看免费播放| 在线播放91| 亚洲欧美日韩综合二区三区| 国产成人亚洲精品无码电影| 好吊日免费视频| 成人免费一区二区三区| 日韩黄色精品| 国产亚洲精久久久久久无码AV| 成人年鲁鲁在线观看视频| 四虎永久在线精品影院| www.亚洲一区二区三区| 一区二区欧美日韩高清免费| 欧美亚洲一区二区三区在线| 成人免费视频一区| 国产亚洲欧美日韩在线一区二区三区| 亚洲无码视频图片| 国产新AV天堂| 日本高清成本人视频一区| 色成人综合| 国产美女一级毛片| 亚洲美女AV免费一区| 东京热av无码电影一区二区| 亚洲第一色视频| 丁香婷婷激情网| 中文天堂在线视频| 国产十八禁在线观看免费| 亚洲国产在一区二区三区| AV片亚洲国产男人的天堂| 欧美激情福利| 国产成人精品亚洲77美色| 国产AV无码专区亚洲精品网站| 国产一区二区免费播放| 日本高清有码人妻| 国产浮力第一页永久地址| 午夜人性色福利无码视频在线观看| 亚洲午夜国产精品无卡| 99久久精彩视频| 青青青草国产| 色哟哟国产精品| 亚洲中文字幕手机在线第一页| 国产手机在线小视频免费观看| 91精品日韩人妻无码久久| 国产激情无码一区二区APP| 国产精品手机视频| 99精品国产高清一区二区| 亚洲高清无码精品| 99久久国产综合精品2020| 九九久久精品国产av片囯产区| 最新国产精品第1页| 白浆免费视频国产精品视频| 国产欧美日本在线观看| 91在线高清视频| 在线观看热码亚洲av每日更新| 黄色福利在线|