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

某網站SQL注入漏洞修補

2017-09-04 12:42:45范義山
科技視界 2017年9期

范義山

【摘 要】網站SQL注入漏洞風險性極大,并且非常普遍,要檢查網站是否有SQL注入漏洞非常容易,但是要修補SQL注入漏洞,還是需要一定的編碼能力和實際經驗。本文以一個真實的SQL注入漏洞修補過程為例,講解注入漏洞修補方法。

【關鍵詞】SQL注入漏洞;修補;正則表達式

近日,我單位某部門網站被教育行業漏洞報告平臺報告含有SQL注入漏洞,并給出了具體的路徑、參數和截圖,經我們驗證漏洞確實存在。

1 漏洞現狀

漏洞一為一個URL型注入漏洞,網址為http://**.***.com/more3.aspx?menuid=11&;&childid=21,在網址后面手工添加and 1=1,網頁依然正常顯示,而改成and 1=2之后,網頁沒有顯示,說明手工添加的數據都作為參數提交到數據庫執行了,說明存在注入漏洞,如果將添加的內容改為其他的SQL語句可以對數據庫進行其他的非授權操作。

漏洞二為一個搜索型注入漏洞,網址為網站首頁(http://**.***.com/),首頁左側有一個搜索信息功能,后臺頁面search.aspx沒有對在該文本框中輸入的搜索信息過濾,如果攻擊者在搜索框中填寫了特殊的SQL語句,也會提交到數據庫執行,導致信息泄露,甚至數據庫被破解,后臺被掌控,帶來很大的安全隱患。

漏洞三為一個登錄型注入漏洞,網址為網站后臺登陸頁面(http://**.***.com/login.aspx),在用戶名或密碼框中輸入拼接的SQL語句(如' or '1'='1),可以直接登陸后臺,網站完全被黑客控制。

2 漏洞原理

SQL注入是攻擊者在URL地址、提交的表單數據中人為構造畸形的SQL語句,欺騙后臺程序對數據庫執行未授權的查詢、增、刪、改等操作,進而獲取網站的管理員賬號,掌握網站控制權,篡改網頁。

最簡單的例子就是在密碼框password中輸入' or '1'='1,那么SQL查詢語句就變成了:

select * from users where password='' or '1'='1'

這個查詢永遠為真,攻擊者不需要用戶名密碼就可以登錄后臺。

3 修補原理'

根據SQL注入原理,要阻止SQL注入就是要過濾掉非法的數據提交,不讓非法語句提交到數據庫執行。如何識別非法數據,就成為漏洞修補的關鍵。可以從正反兩方面來判斷數據是否合法,如果能確定合法數據的字符組合特征,并且非法數據肯定不符合該字符組合特征,則可以從識別合法數據的角度來過濾數據。如果合法數據的字符組合特征也包含了非法數據的可能,而非法數據的特征比較明顯,則可以從識別非法數據的角度來過濾數據。

設定合適的字符組合規則和選用合適的工具進行匹配就是數據過濾的關鍵。正則表達式(又稱規則表達式,在代碼中常簡寫為regex、regexp或RE)就是一個非常合適的匹配工具,可以用來對提交的數據與預先設定好的規則進行匹配。主流的程序設計語言都支持利用正則表達式進行字符串操作。

4 修補方案

4.1 漏洞一修補方案

因為menuid,childid兩個參數的合法值全部為數字,而非法數據含SQL語句,肯定不會全部為數字,所以可以從識別合法數據的角度來進行數據過濾。

正則表達式設定為\d{1,5},即1到5位數字。采用if(!Regex.IsMatch(menuid, @"^\d{1,5}$"))來判斷menuid參數是否不匹配該正則表達式,如果不匹配,則彈出警告,不提交到數據庫中執行。其中^表示匹配字符串的開始,$表示匹配字符串的結束,@符號表示后面字符串中的轉義序列“不”被處理。代碼如下:

using System.Text.RegularExpressions; /*引入命名空間*/

if(!Regex.IsMatch(menuid,?@"^\d{1,5}$"))

{

Response.Write ("檢測到SQL注入危險, 請勿非法操作!");

Response.End();

}

if(!Regex.IsMatch(childid,?@"^\d{1,5}$"))

{

Response.Write ("檢測到SQL注入危險, 請勿非法操作!");

Response.End();

}

4.2 漏洞二修補方案

因為合法數據為字符串,而非法數據也為字符串,所以不好從識別合法數據的角度進行數據過濾。但非法數據中含select、update、delete、insert、or、and、=、等SQL語句中的關鍵詞,可以從識別非法數據的角度來進行數據過濾。代碼如下:

using System.Text.RegularExpressions;

string pattern =@"'|;|#|([\s\b+()]+(select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[\s\b+]*)";

Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);

if (rgx.IsMatch(title)) /* title為搜索框信息變量 */

{

Response.Write ("檢測到SQL注入危險, 請勿非法操作!");

Response.End();

}

4.3 漏洞三修補方案

漏洞三的修補和漏洞二一樣,也是從識別非法數據的角度進行過濾,只需將方案二中的title變量改成用戶名、密碼的變量username、password,然后分別檢測即可。將漏洞二、漏洞三設置成兩個類別的目的是為了提醒程序員,黑客可以從搜索框、用戶名密碼框進行注入。

5 系統調試

5.1 手工測試

對漏洞一,采用單引號測試法(在網址后面添加單引號)、1=1測試法(在網址后面添加 and 1=1或and 1=2),發現都會彈出注入警告,不再出現正常顯示的網頁或錯誤代碼,證明非法數據被識別,未提交數據庫執行。

對漏洞二、三,分別在搜索框、用戶名密碼框中輸入' or '1'='1,發現都會彈出注入警告,不再出現正常顯示的網頁或錯誤代碼或登錄成功,證明非法數據未提交數據庫執行。

5.2 工具軟件測試

采用工具軟件SQLMAP進行注入測試,均提示” [CRITICAL] all tested parameters appear to be not injectable” ,說明已經不可注入,證明漏洞已經修補。

6 結語

注入漏洞風險性極大,應該引起足夠重視。正則表達式能有效的對數據進行合法性檢驗,過濾非法數據,保障網站安全。另外,還應在防火墻上做相應的防護策略,阻止黑客對網站的滲透測試,滲透測試雖然不一定能成功,但會嚴重占用服務器CPU、內存資源,降低網站反應速度,甚至對網站的穩定性、可用性帶來很大威脅。最后,采用網頁靜態化技術可以有效降低網站被注入的危險,提高網站安全性。

[責任編輯:朱麗娜]endprint

主站蜘蛛池模板: 成人毛片免费在线观看| 亚洲手机在线| 久久精品女人天堂aaa| 亚洲精品成人福利在线电影| 亚洲六月丁香六月婷婷蜜芽| 国产欧美精品午夜在线播放| 亚洲最猛黑人xxxx黑人猛交 | 欧美伊人色综合久久天天| 久久国产亚洲偷自| 免费无码又爽又黄又刺激网站| 亚洲经典在线中文字幕| 欧美成人精品在线| 97se亚洲| 玖玖精品在线| 日本www在线视频| 视频一区视频二区日韩专区 | 国产又色又刺激高潮免费看| 重口调教一区二区视频| 日韩二区三区无| 4虎影视国产在线观看精品| 亚洲视频在线网| 亚洲精品波多野结衣| 欧美成人怡春院在线激情| 2048国产精品原创综合在线| 99这里精品| 亚洲欧美另类视频| 国产又大又粗又猛又爽的视频| 亚洲精品777| 老司国产精品视频91| 国产中文一区a级毛片视频| 成人自拍视频在线观看| 性喷潮久久久久久久久| 在线观看国产精美视频| 国产精品手机在线播放| 国产成人综合在线观看| 欧美精品1区| 欧美久久网| 国产精品自在拍首页视频8| 成人字幕网视频在线观看| 国产清纯在线一区二区WWW| 中文字幕人成乱码熟女免费| 狠狠色噜噜狠狠狠狠色综合久 | 亚洲天堂区| 亚洲精品老司机| 色首页AV在线| 亚洲AⅤ综合在线欧美一区| 狠狠色噜噜狠狠狠狠奇米777| 亚洲天堂免费在线视频| 1769国产精品视频免费观看| 欧美成人精品在线| 免费毛片全部不收费的| 亚洲综合香蕉| 99视频在线精品免费观看6| 中文字幕在线观看日本| 网友自拍视频精品区| 国产精品刺激对白在线| 亚洲自偷自拍另类小说| 国产熟睡乱子伦视频网站| 免费人成在线观看成人片| 亚洲九九视频| AV不卡国产在线观看| 午夜色综合| 美美女高清毛片视频免费观看| 成人福利视频网| 中国国产高清免费AV片| 91麻豆精品国产高清在线| 国产精品精品视频| AV不卡在线永久免费观看| 国产成人精品日本亚洲77美色| www.亚洲国产| 男人天堂伊人网| 欧美日韩久久综合| 国产真实乱子伦视频播放| 久久精品丝袜| 久久中文字幕av不卡一区二区| 国产精品原创不卡在线| 久久精品视频亚洲| 国产综合精品一区二区| 国产主播福利在线观看| 大香伊人久久| 欧美有码在线| 青青草久久伊人|