ASP技(jì)術(shù)
  當前位置:首頁 > 技(jì)術(shù)支持 > ASP技(jì)術(shù)
用(yòng)IIS+ASP建網站(zhàn)的(de¥₩✘↔)安全性分(fēn)析
發布時(shí)間(jiān):2005-04-14 浏覽:3294次
   随著(zhe)Internet的(de)發展,Web技(jì)術₩♥(shù)日(rì)新月(yuè)異,人(rén)們已經不(bù)再滿足于靜↑₽(jìng)态HTML技(jì)術(shù),更多(du∑®<ō)的(de)是(shì)要(yào)求動态、交互的(de)網絡技(j  ì)術(shù)。繼通(tōng)用(yòng)網關接口δ↔(CGI)之後,微(wēi)軟推出的(de)IIS+ASP的 ↑(de)解決方案作(zuò)為(wèi)一(yī)種典型的(de)服務↕ 器(qì)端網頁設計(jì)技(jì)術(shù),被廣泛應  ♦ 用(yòng)在網上(shàng)銀(yín)行(xí↕​±ng)、電(diàn)子(zǐ)商務、網上(shàng)調查、網上(€¥♦shàng)查詢、BBS、搜索引擎等各種互聯網應用(←γ§ yòng)中。與此同時(shí),Access數(shù)‌‍'據庫作(zuò)為(wèi)微(wēi)軟推出€§的(de)以标準JET為(wèi)引擎的(de)桌面型數(shù)據庫系 ✘α£統,由于具有(yǒu)操作(zuò)簡單、界面友(yǒu)好(hǎo)等特∞↓點,具有(yǒu)較大(dà)的(de)用(yòng)戶群體(tǐ)¶∏>。目前,IIS+ASP+Access是(shì)中小γ (xiǎo)型Internet網站(zhàn)的(d↕♠e)首選方案。但(dàn)是(shì),該₩≥解決方案在為(wèi)我們帶來(lái)便捷的(de)同時(shí),也(y¶ ​¥ě)帶來(lái)了(le)嚴峻的(de)安ε™±全問(wèn)題。

一(yī)、安全隐患分(fēn)析


IIS+ASP+Access解決方案的(de)主要(yào>©₩α)安全隐患來(lái)自(zì)Access數(sh ♣ù)據庫的(de)安全性,其次在于ASP網頁設計(jì)過程中的(de)安&&"全意識和(hé)措施。


1.數(shù)據庫可(kě)能(nén∑$g)被下(xià)載


在IIS+ASP+Access網站(zhàn)中,如(rú)果有(yǒu)人₩×(rén)通(tōng)過各種方法獲得(de)或者猜到(d>♣ào)數(shù)據庫的(de)存儲路(lù)徑和λ®(hé)文(wén)件(jiàn)名,則該數(shù)據庫就(₩↑Ω↔jiù)可(kě)以被下(xià)載到(dào)本地(dì)。例÷↕如(rú):對(duì)于網上(shàng)書(shū)店(diàn)ε 數(shù)據庫,一(yī)般命名為(wèi)boo≈δk.mdb、store.mdb等,存儲路(lù)徑一(yī)般為(wèi)“U€π≥¥RL/database”或放(fàng)在根目錄“URL/”下(★≥‍xià),這(zhè)樣,任何人(rén)敲δ"€×入地(dì)址:“URL/database/s≈¶÷tore.mdb”, 數(shù)據庫就(jiù)可(kě)以被下(xià)載£ 了(le)。


2.數(shù)據庫可(kě)能(néng σ♦)被解密


由于Access數(shù)據庫的(de)加密機(jī)制(☆εzhì)比較簡單,即使設置了(le)密碼,解密也(yě)很(hěn)容"♦易。該數(shù)據庫系統通(tōng)過将用('λ€βyòng)戶輸入的(de)密碼與某一(yī)固定密鑰(例如(rú): Acce×πss 97為(wèi)86 FB EC 37 ♦←≤5D 44 9C FA C6 5E 28 E6 13)進行(xíng)“異或×$”來(lái)形成一(yī)個(gè)加密串,并将其存儲在*.mdb文♥↕β(wén)件(jiàn)從(cóng)地(dì)址×∞§∑“&H42”開(kāi)始的(de)區(qū)域內(nèi←≈♣β)。我們可(kě)以輕松地(dì)編制(zhì)解密程序,一(yī)個(g<≤∏è)幾十行(xíng)的(de)小(xiǎo)程序就(jiù)可(kě)以₽↓輕松地(dì)獲得(de)任何Access數(shù)據庫的(☆↕&de)密碼。因此,隻要(yào)數(shù)據庫被下(xià)載,<‍其信息就(jiù)沒有(yǒu)任何安全性可(kě)言了'£(le)。


3.ASP頁面的(de)安全性


(1)源代碼安全性隐患。由于ASP程序采用(yòn®✘™g)非編譯性語言,大(dà)大(dà)降低(dī)了(≈↑π>le)程序源代碼的(de)安全性。如(rú)果黑(hēi)客侵入站λ α(zhàn)點,就(jiù)可(kě)以獲得(de)ASP源代碼;同時"α(shí)對(duì)于租用(yòng)服務器(✔™✘qì)的(de)用(yòng)戶,因個(gè)别服務器€"γ↑(qì)出租商的(de)職業(yè)道(dào)德問(wèn£ §γ)題,也(yě)會(huì)造成ASP應用(yòng‌π)程序源代碼洩露。


(2)程序設計(jì)中容易被忽視(shì)的(d♥<✘ e)安全性問(wèn)題。ASP代碼使用(÷π‌λyòng)表單實現(xiàn)交互,而相(xiàng)應的∑♦♦δ(de)內(nèi)容會(huì)反映在浏覽器(qì)的(d±★¶e)地(dì)址欄中,如(rú)果不(bù)采用(yòng)>∞"♣适當的(de)安全措施,隻要(yào)記下(xià)這(ε★  zhè)些(xiē)內(nèi)容,就(✔÷jiù)可(kě)以繞過驗證直接進入某一(yī)頁面。例如(r$‍ú)在浏覽器(qì)中敲入“...page.asp?x=1”,即可(kě¶★)不(bù)經過表單頁面直接進入滿足“x=1”條件(jiànδ€≥)的(de)頁面。因此,在驗證或注冊頁面中,必須采取特殊措施來(lá≥₹αi)避免此類問(wèn)題的(de)産生(shēng)。φ↕


二、提高(gāo)IIS+ASP網站(z<φ≤✘hàn)安全性的(de)方法


1.防止數(shù)據庫被下(xià)載


由于Access數(shù)據庫加密機(jī)制(zhì)過于™‍♥ 簡單,有(yǒu)效地(dì)防止數(shù€$∞)據庫被下(xià)載,就(jiù)成了(l÷ e)提高(gāo)ASP+Access解決>∑α方案安全性的(de)重中之重。以下(xià)兩種方法簡單、有(yǒu)效。α∞


(1)非常規命名法。為(wèi)Access數(shù)據庫文( ≤ ♦wén)件(jiàn)起一(yī)個(gè)複雜(zá)的(de)↕&非常規名字,并把它放(fàng)在幾個( ​ε®gè)目錄下(xià)。例如(rú),對(duì)于網上£™εα(shàng)書(shū)店(diàn)的(de)數(shù)據←♠₩庫,我們不(bù)把它命名為(wèi)“book.mdb”≤↑或“Store.mdb”,而是(shì)起個(gè∏↓)非常規的(de)名字,例如(rú):fa←₹q9jl.mdb,再把它放(fàng)在如(rú).‍×</akkt/kj61/acd/av5 的(de)幾層目錄✘•下(xià),這(zhè)樣黑(hēi)客想通(t‌®☆ōng)過猜的(de)方式得(de)到(dào)Access數☆ ↓☆(shù)據庫文(wén)件(jiàn)名就(jiù ♣•)很(hěn)難了(le)。


(2)使用(yòng)ODBC數(shù)據源。在ASP程序設計(jì→←α©)中,如(rú)果有(yǒu)條件(jiàn),應盡量使用(yòng)<≠≠ODBC數(shù)據源,不(bù)要(yào)把®€>數(shù)據庫名寫在程序中,否則,數(shù)Ω 據庫名将随ASP源代碼的(de)失密而一(yī)同失密,例如∞λβ(rú):


DBPath = Server.MapPath(“./'δ±€akkt/kj61/acd/av5/faq9jl.↕≠​mdb ”)


conn.open “driver={Microsoft Ac≈γ✘cess Driver (*.mdb)};↔→dbq=”& DBPath


可(kě)見(jiàn),即使數(shù)據庫名字起得(de)£♥再怪異,隐藏的(de)目錄再深,ASP源代Ω± φ碼失密後,也(yě)很(hěn)容易被下(xià)載下(xià)來(láiγ®‌‍)。如(rú)果使用(yòng)ODBC數♦♦(shù)據源,就(jiù)不(bù)會(huì)存在這ε↔↓≠(zhè)樣的(de)問(wèn)題了(le):


conn.open “ODBC-DSN名”


2.對(duì)ASP頁面進行(xíng)加密


為(wèi)有(yǒu)效地(dì)防止ASP源代碼洩露," π可(kě)以對(duì)ASP頁面進行(x₹× $íng)加密。我們曾采用(yòng)兩種方法對(duì)ASP頁面進行 ±(xíng)加密。一(yī)是(shì)使用(yòng)組件(ji↑₹×→àn)技(jì)術(shù)将編程邏輯封↕↑裝入DLL之中;二是(shì)使用(yòng≠↕€←)微(wēi)軟的(de)Script Enco♦εder對(duì)ASP頁面進行(xíng)加密。使用↕♠&≠(yòng)組件(jiàn)技(jì)術(shù)存在的(de)主要(yà☆↔ o)問(wèn)題是(shì)每段代碼均需組件¥♦♥(jiàn)化(huà),操作(zuò)比較繁瑣,工(gōng)作(zuò€σ₽)量較大(dà),而使用(yòng)Encoder對∑↔€(duì)ASP頁面進行(xíng)加密,操作(zu™↑©βò)簡單、收效良好(hǎo)。Script Enc'Ω♦oder的(de)運行(xíng)程序是(shì)SCRENC.EX♣β±E,使用(yòng)方法是(shì):


SCRENC [/s] [/f] [/x♦•§l] [/l defLanguage ] [/e defExtensδ✘γion] inputfile outputfi&×®le


其中:/s 是(shì)屏蔽屏幕輸出;/f 指定輸出文(wén)件 ÷(jiàn)是(shì)否覆蓋同名輸入文(wén)≠✘©件(jiàn);/xl 指是(shì)否在.asp♥§文(wén)件(jiàn)的(de)頂部添加@Language指令;/l de©♦™fLanguag指定缺省的(de)腳本語言; /e d↔§efExtension 指定待加密文(wén)λ✔ ♥件(jiàn)的(de)擴展名。


 


3.注冊驗證


為(wèi)防止未經注冊的(de)用(yòng)戶繞過注±↕π≥冊界面直接進入應用(yòng)系統,我們采用(yòng)Session對(du×♠®'ì)象進行(xíng)注冊驗證。例如(rú),我們制(zhì)作(zuò)£←★了(le)下(xià)面的(de)注冊頁面。


設計(jì)要(yào)求注冊成功後系統啓✔©♥動hrmis.asp?page=1頁面。假設,不(bù)采用(♦ ↕yòng)Session對(duì)象進行(xíng)注≈ε♥冊驗證,則用(yòng)戶在浏覽器(qì)中敲入©β‍∑“URL/hrmis.asp?page=1”即可(kě)繞過注 ★冊界面,直接進入系統。


在此,利用(yòng)Session對(duì)象進行(xín$₩g)注冊驗證:


〈%


’讀(dú)取使用(yòng)者所輸入的(de)賬>ε 号和(hé)密碼


UserID = Request(“UserID”)


Password = Request(“Password”)


’檢查UserID 及Password 是(s€‌≈©hì)否正确


If UserID 〈〉“hrmis” Or Pas↓✘sword 〈〉“password” Then


Response.Write “賬号錯(cuò)誤!”


Response.End


End If


’将Session 對(duì)象設置為(wèi)通(tō↔ εng)過驗證狀态


Session(“Passed”) = True


%〉


進入應用(yòng)程序後,首先進行(xíng)驗證:


〈%


’如(rú)果未通(tōng)過驗證,返回L✘γogin狀态


If Not Session(“Pass¶✔™ed”) Then


Response.Redirect “Loginαπδ .asp”


End If


%〉


通(tōng)過對(duì)IIS+ASP+↔π∞Access網上(shàng)應用(yòng)系統安全性§¶σ的(de)研究,我們對(duì)現(xiàn)有(yǒu)系統進行≥<(xíng)了(le)改造,收到(dào)了(le)較∞∏好(hǎo)的(de)效果。

 
 
    
 
 
版權所有(yǒu) © 2005-2024 南昌 ↑億雲信息技術有限公司 京ICP證000000号  皖公網安備 34019202000659≈&‍™号
地(dì)址:安徽省合肥市(shì)蜀山(shān)區 λ(qū)望江西(xī)路(lù)69号西(xī)湖(hú)&"國(guó)際廣場(chǎng) 電(diàn)話(huà):0551-64935878 郵箱:aα€δ dmin@ajsoft.cn