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

基于ASP網站SQL注入防御的方法

2008-12-31 00:00:00張皓宇李明皓王宇欣單薇薇
電腦知識與技術 2008年27期

摘要:該文簡要介紹了SQL注入攻擊的原理,并針對SQL注入的方法,給出了SQL注入攻擊的防御方法。

關鍵詞:ASP;SQL注入;防范技術;網絡安全

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)27-1996-02

Protective Artifice for SQL Injection Based on ASP Website

ZHANG Hao-yu,LI Ming-hao,WANG Yu-xin,SHAN Wei-wei

(Liaoning Province Meteorology Information and Technical Support Center, Shenyang 110016, China)

Abstract: The text Introduces elements of SQL Injection and advances protective artifice to aim at SQL Injection.

Key words: ASP; SQL injection; keep away; network safety

1 引言

隨著B/S模式應用開發的發展,使用這種模式編寫應用程序的程序員也越來越多。但是由于相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段數據庫查詢代碼,根據程序返回的結果,獲得某些他想得知的數據,這就是所謂的SQL Injection,即SQL注入。

2 SQL注入原理

SQL是一種用于關系數據庫的結構化查詢語言。它分為許多種,但大多數都松散地基于美國國家標準化組織最新的標準SQL-92。SQL語言可以修改數據庫結構和操作數據庫內容。當一個攻擊者能夠通過往查詢中插入一系列的SQL操作數據寫入到應用程序中去,并對數據庫實施了查詢,這時就已經構成了SQL-Injection。所謂SQL注入(SQL Injection),就是利用某些Web應用程序對用戶輸入數據的合法性檢測不嚴或不檢測的特點,故意從客戶端提交一段特殊的數據庫查詢代碼,根據程序返回的結果,達到收集程序、數據庫及服務器的信息,獲取想得到而通過正常途徑無法得到的資料,使整個網站服務器失控甚至對網站進行破壞性攻擊的目的。

程序存在SQL注入,追其原因,是因為代碼或者編碼的不完善。但說到底,是程序員的惰性。代碼的不完善,往往是因為在程序編寫的過程中,沒有考慮到代碼的健壯性及安全性的結果,就國內現狀來看,大多數網站使用的腳本語言,用ASP+Access或SQLServer的占70%以上,PHP+MySQL占20%,其他的不足10%,由于開發者代碼編寫的過程考慮不夠周全,往往忽略程序代碼的安全性,而使程序腳本被注入也成為必然。從攻擊者的角度來看,使用SQL注入能夠避免絕大多數防火墻的防御,不留攻擊痕跡,攻擊手法多種多樣,因此才會導致SQL注入攻擊手段的興起。

SQL注入通過網頁對網站數據庫進行修改。它能夠直接在數據庫中添加具有管理員權限的用戶,從而最終獲得系統管理員權限。黑客可以利用獲得的管理員權限任意獲得網站上的文件或者在網頁上加掛木馬和各種惡意程序,對網站的正常運營和訪問該網站的網友都帶來巨大危害。

3 SQL注入防御

SQL注入是從正常的WWW端口通過對頁面請求訪問,而且表面看起來跟一般的Web頁面訪問沒什么區別,所以目前市面的防火墻很少會對SQL注入發出警報,如果管理員沒查看IIS日志的習慣,可能被入侵很長時間都不會發覺。SQL注入的手法相當靈活,可以根據具體情況進行分析,構造巧妙的SQL語句,從而獲取想要的數據。針對SQL攻擊的防御,現在各網站經常采用的方法,主要有以下一些解決的方法:

3.1 檢驗敏感字符/字符串

有些程序員采取針對一些敏感的字符串,主要是對SQL命令或關鍵字進行處理,把它們從客戶端提交的信息中找到、刪除,并把剩余的信息默認為安全信息寫入數據庫。雖然在一定程度上有效,但有“治標不治本”的嫌疑,舉例來說明他的弱點,當客戶端的輸入為“…ccmdmcmdd…”時,在對敏感字符串“cmd”替換刪除以后,剩下的字符正好是“…cmd…”。新的攻擊方式正在被不斷發現,只要允許服務端程序使用這些提交信息,就總有受到攻擊的可能。可見這個方法是不健全的,稍加變化即可躲過檢察。

其實,最好的方法就是一旦檢測到敏感字符/字符串,只要把它們屏蔽,并針對數據庫的操作即行中止。具體代碼如下:

function RequestX(strGet)

strTemp=Request.Form(strGet)

dim nothis(16)

nothis(0)=\"net user\"

nothis(1)=\"xp_cmdshell\"

nothis(2)=\"/add\"

nothis(3)=\"exec%20master.dbo.xp_cmdshell\"

nothis(4)=\"net localgroup administrators\"

nothis(5)=\"select\"

nothis(6)=\"count\"

nothis(7)=\"asc\"

nothis(8)=\"char\"

nothis(9)=\"mid\"

nothis(10)=\"'\"

nothis(11)=\"\"\"\"

nothis(12)=\"insert\"

nothis(13)=\"delete\"

nothis(14)=\"drop\"

nothis(15)=\"truncate\"

nothis(16)=\"from\"

for i=1 to ubound(nothis)

if instr(strTemp,nothis(i)) then

Response.write \"你輸入的內容含有非法字符!\"

Response.write \"請返回重試\"

Response.End

end if

next

RequestX=strTemp

end function

將上述代碼封裝在一個asp文件中,在網頁代碼中可直接調用。對于純數字的信息傳遞,可采用數字檢驗,不是數字便停止操作。應sql注入檢測,主要過濾掉“'”。具體函數代碼如下:

Function ReqNum (StrName)

ReqNum = Request (StrName)

if Not isNumeric (ReqNum) then

Response.Write \"參數必須為數字型!\"

Response.End

End if

End Function

Function ReqStr (StrName)

ReqStr = Replace (Request(StrName), \"'\", \"''\" )

End Function

這兩個函數在頁面中直接調用即可。

3.2 查堵form或cookies的漏洞

既然攻擊者是通過form或cookies提交包含“or”和“=” 等特殊字符,那么我們的防范措施就是在這部分程序中加入檢查或過濾這些特殊字符的代碼,以實現安全目的。方法是在使用: paraname=Request.form()或paraname=Request. Cookies()獲取用戶名和密碼后加入代碼:

If instr(paraname," ")>0 or instr(paraname," or ")>0 or instr(paraname,"=")>0 or instr(paraname,"'")>0 or instr(paraname,";")>0 then

Response.Write "<Script Language=JavaScript>alert('用戶參數中含有非法字符串!'); history.back();</Script>"

Response.End

End If

含義:假如在用戶參數paraname中找到了(空格)#65380;(or)#65380;(=)#65380;(')與(;)等非法字符,就立即執行then 后的語句,終止ASP的運行,入侵者也就無法進行SQL注入了#65377;

3.3 用戶密碼加密

程序員要做的另一件事是給用戶密碼加密,一般用MD5加密較好#65377;MD5沒有反向算法,不能解密,人家即使知道經加密后存在數據庫里的像亂碼一樣的密碼,他也沒辦法知道原始密碼#65377;要注意的是,正因為MD5加密以后的信息不可以解密,如果用戶丟失密碼,任何人都很難找到用戶原來的密碼#65377;鑒于篇幅,MD5加密的具體做法請參考有關資料,這里不作闡述#65377;

3.4 屏蔽出錯信息

精心配置IIS打造一個安全Web服務器是一項科學嚴謹的工作,事關網絡安全之首要,也是服務器管理員的神圣職責,具體做法請參見有關資料#65377;針對防范SQL注入要做的主要是把IIS設置成不管出什么樣的ASP錯誤,只給出一種錯誤提示信息,即http 500錯誤,再小心設置數據庫用戶權限#65377;這樣人家就無法入侵了#65377;IIS設置詳見圖1所示#65377;首先把500:100這個錯誤的默認提示頁面C:\\WINDOWS\\Help\\iisHelp\\common\\500-100.asp改成C:\\WINDOW\\Help\\iisHelp\\Common\\500.htm#65377;

其次還應在IIS中為每個網站設置好執行權限,一般情況下有"純腳本"權限就夠了,對于那些存放網站后臺管理中心上傳文件的目錄執行權限設為“無”更好,這樣可以防止人家上傳運行ASP木馬#65377;

4 結束語

SQL注入是網絡安全領域的新事物,但發展快危害大,而且經常被一些網站開發或網頁設計人員所忽視#65377;近年來,給網站的穩定運行帶來了很大的影響,我們提高安全意識,在設計開發和網站運行的過程中隨時注意查堵SQL注入漏洞,在很大程度上提高網站的運行安全#65377;

參考文獻:

[1] 周天思,孫明麗,龐婭娟. ASP開發技術大全[M]. 北京:人民郵電出版社,2007.

[2] 薛小龍. ASP典型系統實戰與解析[M]. 北京:電子工業出版社,2007.

[3] 張友生,米安然. 計算機病毒與木馬程序剖析[M]. 北京:科海電子出版社,2003.

主站蜘蛛池模板: AⅤ色综合久久天堂AV色综合 | av午夜福利一片免费看| 精品国产aⅴ一区二区三区| 久久大香香蕉国产免费网站 | 欧美日韩国产高清一区二区三区| 亚洲第一黄色网址| 99成人在线观看| 人妻少妇乱子伦精品无码专区毛片| 草草影院国产第一页| 少妇精品在线| 久久国产精品电影| 亚洲日韩久久综合中文字幕| 成人毛片免费在线观看| 免费福利视频网站| 国产精品久久久免费视频| 日本亚洲成高清一区二区三区| 中国黄色一级视频| 青青国产在线| 中文字幕无线码一区| 国产成人AV大片大片在线播放 | 四虎亚洲国产成人久久精品| 日本国产精品一区久久久| 91精品在线视频观看| 四虎永久在线| 中文字幕 91| 久久久噜噜噜久久中文字幕色伊伊 | 99re视频在线| 国产精品嫩草影院视频| 亚欧美国产综合| 九九这里只有精品视频| 伊人天堂网| 国产成人在线无码免费视频| 一区二区三区成人| 久久久久亚洲AV成人网站软件| 国产欧美日韩在线一区| 毛片基地视频| 国产一区二区色淫影院| 国产一区二区三区视频| 无码AV日韩一二三区| 欧美色综合网站| 真人免费一级毛片一区二区| 国产精品成| 91国内外精品自在线播放| 亚洲欧美日韩久久精品| 亚洲bt欧美bt精品| 国产av无码日韩av无码网站| 亚洲Av激情网五月天| 日本精品视频一区二区| 久久精品波多野结衣| 一级毛片在线免费视频| 欧美精品在线免费| 欧美在线视频不卡| 久久国产亚洲偷自| 国产丝袜无码精品| 欧美特黄一级大黄录像| 日韩欧美中文| 欧美另类精品一区二区三区| 精品综合久久久久久97| 91久久夜色精品国产网站| 日韩欧美中文| 天堂成人在线| 88av在线| 国产真实二区一区在线亚洲| 日本精品αv中文字幕| 最新亚洲人成无码网站欣赏网| 91九色视频网| 美女视频黄频a免费高清不卡| 中国成人在线视频| 午夜天堂视频| 九九免费观看全部免费视频| 日本在线欧美在线| 92午夜福利影院一区二区三区| 美女无遮挡免费网站| 久久久国产精品无码专区| 中文无码毛片又爽又刺激| 视频一区视频二区中文精品| 人妻丰满熟妇αv无码| 日韩精品免费在线视频| 日韩高清中文字幕| 国产成人精彩在线视频50| 午夜精品一区二区蜜桃| 久久久四虎成人永久免费网站|