摘要:隨著計算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展, ASP(Active Server Pages)作為一種典型的服務(wù)器端網(wǎng)頁設(shè)計技術(shù), 被廣泛地應(yīng)用在各種互聯(lián)網(wǎng)應(yīng)用中。而動態(tài)網(wǎng)的安全問題日益突顯,安全問題備受關(guān)注。該文先分析了ASP動態(tài)網(wǎng)存在的安全隱患,然后針對這些安全隱患,提出了相應(yīng)的安全保護(hù)方案,從而為網(wǎng)站的數(shù)據(jù)安全提供保障。
關(guān)鍵詞:ASP網(wǎng)站;安全;防范措施
中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)33-1342-03
Security Countermeasure on Website with ASP
HU Sai
(Hunan Biological and Electromechanical Polytechnic,Changsha 410127,China)
Abstract: Along with the computer technology and networking's development, ASP (Active Server Pages) takes one kind of typical server end homepage design technique, widely is applied in each kind of Internet application. But the dynamic net's security problem underlines day by day, the security problem receives the attention. This article has analyzed the ASP dynamic net existence safe hidden danger first, then in view of these safe hidden dangers, proposed the corresponding safekeeping of security plan, thus provides the safeguard for the website data security.
Key words: ASP website; security;countermeasure
隨著互聯(lián)網(wǎng)的迅速發(fā)展,為了能更好地更充分地使用好互聯(lián)網(wǎng)這個世界上最大的交流平臺,許多單位競相建設(shè)了自己的網(wǎng)站。在Web 數(shù)據(jù)庫訪問的多種技術(shù)中,ASP以其開發(fā)周期短、存取數(shù)據(jù)庫方便、執(zhí)行效率高而成為眾多網(wǎng)站程序員的首選開發(fā)技術(shù)。ASP是Microsoft公司推出的一種用以取代CGI通用網(wǎng)關(guān)接口的技術(shù),英文全稱Active Server Pages,動態(tài)服務(wù)器網(wǎng)頁。它是一個Web服務(wù)器端的運行環(huán)境。ASP本身包含了VBScript 和Javascript引擎,使得腳本可以直接嵌入HTML中。ASP的主要特性是能夠把腳本、HTML、組件和強(qiáng)大的Web數(shù)據(jù)庫訪問功能結(jié)合在一起,形成一個能在服務(wù)器上運行的應(yīng)用程序,并按用戶的要求專門制作的HTML頁面?zhèn)魉徒o客戶端瀏覽器。但是,ASP雖然提供了強(qiáng)大的功能和較高的安全性能,不經(jīng)意間,也有可能由于網(wǎng)站設(shè)計者和程序員的疏忽大意,或者由于網(wǎng)站管理員的水平和經(jīng)驗的不足,網(wǎng)站可能隨時暴露出許多漏洞,給非法入侵者造成可乘之機(jī),使網(wǎng)站處于風(fēng)口浪尖,隨時有可能受到來自網(wǎng)內(nèi)網(wǎng)外的各種攻擊,給網(wǎng)站帶來麻煩,特別是一些與金融有關(guān)的網(wǎng)站,不僅擁有網(wǎng)站的企業(yè)遭受損失,甚至連累到客戶也遭到嚴(yán)重的經(jīng)濟(jì)損失。所以說,ASP動態(tài)網(wǎng)站的安全問題是個值得網(wǎng)站設(shè)計者和管理者重視的問題。
1 存在的安全隱患
1.1 賬號和密碼的隱患
賬號和密碼是網(wǎng)站的第二道安全防線。入侵者一旦得到后臺登錄界面,他就要想法設(shè)法獲得超級用戶的賬號和密碼。由于網(wǎng)站管理員疏忽或技術(shù)水平不過關(guān),賬號和密碼也有泄露的可能。賬號和密碼一旦被入侵者竊取,網(wǎng)站就完全被入侵者控制。
1.2 Access庫文件的隱患
1.2.1 Access 數(shù)據(jù)庫訪問密碼的隱患
賬戶和密碼泄露的原因除了網(wǎng)站管理員保管不力外,很大程度與Access庫文件有關(guān)。由于Access數(shù)據(jù)庫的加密機(jī)制非常簡單,即使數(shù)據(jù)庫設(shè)置了密碼,解密也很容易。該數(shù)據(jù)庫系統(tǒng)通過將用戶輸入的密碼與某一固定密鑰進(jìn)行異或來形成一個加密串,并將其存儲在3.mdb 文件從地址“H42”開始的區(qū)域內(nèi)。由于異或操作的特點是經(jīng)過2次異或就能恢復(fù)原值,因此,用這一密鑰與3. mdb 文件從地址“H42”開始區(qū)域內(nèi)的加密串進(jìn)行第2次異或操作,可以輕松地得到任何Access 數(shù)據(jù)庫的密碼。
1.2.2 Access 數(shù)據(jù)庫被下載的隱患
在ASP + Access 網(wǎng)上應(yīng)用系統(tǒng)中,如果有人通過各種方法獲得或者猜到Access 數(shù)據(jù)庫的存儲路徑和數(shù)據(jù)庫名,則該數(shù)據(jù)庫就可以被下載到本地。只要在瀏覽器地址欄中敲入“URL/ 目錄名/ 文件名”,就可以把數(shù)據(jù)庫輕松下載到本地。
1.3 不檢測用戶輸入造成的隱患
有些ASP網(wǎng)站輸入框不過濾HTML 和JavaScript 語句,利用這個安全漏洞,用戶可以寫入一些可執(zhí)行的ASP代碼,可造成其他用戶的瀏覽器因死循環(huán)而死掉,甚至可以刪除服務(wù)器上的一些重要文件。
1.4 繞過權(quán)限驗證程序的隱患
在程序開發(fā)中,要經(jīng)常編寫ASP 代碼設(shè)置權(quán)限驗證,使不同類別的用戶具有不同級別的操作權(quán)限。比如,對于程序中的留言系統(tǒng), 普通用戶可以發(fā)布留言和查看留言的回復(fù),而管理員可以對留言進(jìn)行更多的操作,如刪除、回復(fù)、組合查詢等。對于安全性不強(qiáng)的系統(tǒng), 用戶在知道相關(guān)頁面目錄的情況下,可以通過在瀏覽器中敲入相應(yīng)的地址,繞過驗證直接進(jìn)入該頁面,用戶只需直接在瀏覽器端敲入“http://服務(wù)器主機(jī)名/相對路//liuyan.asp\"就可以饒過權(quán)限驗證。
1.5 ASP 源程序的隱患
由于ASP 程序采用的是非編譯性語言,這大大降低了程序源代碼的安全性。任何人只要進(jìn)入站點,點擊“查看”——“源文件”,就可以獲得源代碼,從而造成ASP 應(yīng)用程序源代碼的泄露。
1.6 木馬的隱患
入侵者一般是通過ASP程序上傳功能的漏洞進(jìn)入后臺上傳ASP木馬程序。當(dāng)木馬一旦上傳上去就有可能取得網(wǎng)站的管理權(quán)限, 修改或刪除文件、數(shù)據(jù)庫, 篡改網(wǎng)站的主頁。因此ASP木馬的防范也尤為重要。
2 關(guān)于安全的防范措施
2.1 關(guān)于賬號和密碼隱患
賬號和密碼的泄露,一是通過猜測被入侵者獲得,二是管理員的疏忽所致。大家知道,UNIX 操作系統(tǒng)的超級用戶賬號是root,Windows操作系統(tǒng)的超級用戶賬號Administrator,所以很多程序員都習(xí)慣為管理員起名為類似與root、Administrator、Admin 等賬號,這樣的賬號非常不安全,很容易被人猜測到。而管理員為了方便自己記憶,有可能是把賬號和密碼寫在某個不保密的地方,這樣泄露的可能性比較大;或者是管理員在輸入時被別有用心的人看見了,也或者是入侵者在管理員登錄的那臺電腦中,用密碼破解技術(shù)獲取到賬號和密碼(這是因為Cookie會記錄賬號和密碼)。為了保證賬號和密碼的安全,網(wǎng)站程序員在起名的時候,要起一個安全性較高的賬號名字,這個名字千萬不能只是數(shù)字或者只是英文字母,而是以英文字母開始的英文、數(shù)字和一些字符的組合,并且盡量長度要超過6個字符以上。除此之外,管理員不要輕易在別的電腦上登錄后臺管理界面。
2.2 關(guān)于Access庫文件隱患
Access 數(shù)據(jù)庫為大家喜愛和熟悉,程序員也經(jīng)常把Access數(shù)據(jù)庫文件命名為data.mdb,位置就在網(wǎng)站目錄/data下,入侵者很容易猜測到數(shù)據(jù)庫文件名字和存放的位置,從而實施攻擊。為了避免這一事故的發(fā)生,應(yīng)該為數(shù)據(jù)庫起一個復(fù)雜一點的名字,存放的目錄也應(yīng)該是多層目錄下。
2.2.1 關(guān)于Access 數(shù)據(jù)庫訪問密碼的隱患
1) 不能把密碼的物理路徑直接寫在程序中,而應(yīng)使用虛擬路徑。2) 使用SSL維護(hù)應(yīng)用程序的安全。它提供了一種安全的虛擬透明的方式來建立與用戶的加密通信連接。SSL保證了Web內(nèi)容的驗證, 并能可靠地確認(rèn)訪問被限制的Web站點的用戶的身份, 防止發(fā)送信息被監(jiān)聽的可能。3) 客戶資格認(rèn)證。這是一種十分安全的方法。每當(dāng)用戶試圖登錄到需要資格驗證的應(yīng)用程序時, 用戶的Web瀏覽器會自動向服務(wù)器發(fā)送用戶資格。如果Web 服務(wù)器的SSL 資格映射特性配置正確, 那么服務(wù)器就可以在許可用戶對ASP應(yīng)用程序訪問之前對其身份進(jìn)行確認(rèn)。
2.2.2 關(guān)于Access 數(shù)據(jù)庫可能被下載的隱患
1) 非常規(guī)命名法。為數(shù)據(jù)庫文件名起個復(fù)雜的非常規(guī)的名字, 并把它放在幾層目錄下。比如對于網(wǎng)上書店的數(shù)據(jù)庫,起個名稱為sw531xh.mdb, 再把它放在如…/skjlt /deg44/eegt65/幾層目錄下, 這樣黑客要想通過猜的方式得到Access數(shù)據(jù)庫文件就很難了。
2) 使用ODBC 數(shù)據(jù)源。盡量使用ODBC數(shù)據(jù)源, 不要把數(shù)據(jù)庫名寫在程序中,否則, 數(shù)據(jù)庫名將隨ASP源代碼的失密而一同失密。例如:
DBPath =Server.MapPath ( “.../skjlt/deg44/eegt65/sw531xh.mdb”)
conn.open “driver={MicrosoftAccessDriver ( *.mdb) };dbq=”DBPath
這樣, 在源程序中, ACCESS數(shù)據(jù)庫的名字一覽無余, 大大降低了數(shù)據(jù)庫的安全性。因此, 建議在ODBC里設(shè)置數(shù)據(jù)源,再在程序中這樣寫: conn.open“your- source”。因為數(shù)據(jù)源只是
一個別名, 用戶無法通過這個名字知道你的數(shù)據(jù)庫原名。
3) 數(shù)據(jù)庫名前加“#”。在數(shù)據(jù)庫文件名字的前面加上“#”, 然后修改數(shù)據(jù)庫連接文件( 如conn.asp) 中的數(shù)據(jù)庫地址。原理是下載的時候只能識別#號前面的部分, 對于后面的自動去掉。比如要下載http: //192.168.1.155/date/#123.mdb, 無論是IE還是Flashget等下載的都是http://192.168.1.155/date/index.htm( index.htm為IIS設(shè)置的首頁文檔) 。
2.3 關(guān)于不檢測用戶輸入造成的隱患
寫一段程序?qū)斎霐?shù)據(jù)進(jìn)行檢查, 屏蔽掉HTML和JavaScript語句。
< %@LANGUAGE =“JScript”% >
< %
Response.CodePage = 1252 ;
Response.Write(RemoveBadCharacters( Request.
Form( “UserName”) ) ) ;
Response.Write ( “< BR > error:”) ;
function RemoveBadCharacters (strTemp) {
strTemp = strTemp.replace(/[ ’A - Za - z0 - 9- ]
/g,“”) ;
return strTemp ;
}
% >
2.4關(guān)于繞過權(quán)限驗證程序的隱患
現(xiàn)在需要經(jīng)過驗證的ASP 程序大多是在頁面頭部加一個判斷語句, 但這還不夠, 有可能被黑客繞過驗證直接進(jìn)入。因此, 對于這類問題的防范, 需要經(jīng)過驗證的ASP 頁面, 可跟蹤上一個頁面的文件名,只有從上一頁面轉(zhuǎn)進(jìn)來的會話才能讀取這個頁面。
2.5 關(guān)于Asp源程序的隱患
當(dāng)存在ASP 的主頁正在制作且沒有進(jìn)行最后調(diào)試完成以前, 可以被某些搜索引擎機(jī)動追加為搜索對象。如果這時候有人利用搜索引擎對這些網(wǎng)頁進(jìn)行查找, 會得到有關(guān)文件的定位, 并能在瀏覽器中查看到數(shù)據(jù)庫地點和結(jié)構(gòu)的細(xì)節(jié), 并以此揭示完整的源代碼。因此, 程序員應(yīng)該在網(wǎng)頁發(fā)布前對它進(jìn)行徹底的調(diào)試; 安全專家則需要加固ASP文件以便外部的用戶不能看到它們。首先對.inc 文件內(nèi)容進(jìn)行加密,其次也可以使用.asp 文件代替.inc 文件使用戶無法從瀏覽器直接觀看文件的源代碼。inc 文件的文件名不要使用系統(tǒng)默認(rèn)的或者有特殊含義容易被用戶猜測到的名稱, 盡量使用無規(guī)則的英文字母。
2.6 關(guān)于木馬的隱患
1) 建議用戶通過ftp來上傳、維護(hù)網(wǎng)頁, 盡量不安裝ASP的上傳程序。2) 對ASP上傳程序的調(diào)用一定要進(jìn)行身份認(rèn)證, 并只允許信任的人使用上傳程序。3) 上傳文件時, 要限制文件的擴(kuò)展名。比如: 上傳圖片文件時, 設(shè)置為只能上傳擴(kuò)展名.jpg或*.gif的文件, 拒絕上傳擴(kuò)展名為.asp或.exe的文件。4) 到正規(guī)網(wǎng)站下載ASP程序, 下載后要對其數(shù)據(jù)庫名稱和存放路徑進(jìn)行修改, 數(shù)據(jù)庫文件名稱也要有一定復(fù)雜性。5) 日常要多維護(hù), 經(jīng)常查看在文件夾有沒有不明的*.asp或*.exe文件, 特別是放置上傳文件的文件夾內(nèi), 數(shù)據(jù)庫中有沒有陌生的數(shù)據(jù)表。一旦發(fā)現(xiàn)被入侵, 立即刪除文件。6) 要經(jīng)常備份數(shù)據(jù)庫、網(wǎng)頁等重要文件, 一旦被木馬破壞, 能及時還原, 減少損失。7) 網(wǎng)站的后臺也是非常關(guān)鍵的。不要在頁面上作后臺的地址鏈接, 這樣后臺地址不容易被猜解。網(wǎng)站后臺的管理賬號密碼不應(yīng)過于簡單, 并且要使用附加碼。
3 結(jié)束語
為了保證動態(tài)網(wǎng)站的穩(wěn)定安全,網(wǎng)站程序員必須在某些安全細(xì)節(jié)上高度注意,盡量避免留下一些安全漏洞;經(jīng)常查閱新技術(shù), 查看有關(guān)安全方面的資料, 關(guān)注最新的漏洞和補丁,使網(wǎng)站更加安全。
參考文獻(xiàn):
[1] 蔡勇,錢兆豐,等.防毒反黑就這么幾招[M].北京:中國電力出版社,2005.
[2] 張文增,林曉森,等.ASP網(wǎng)站安全研究[J].計算機(jī)工程,2002(3):7-10.
[3] 金鼎圖書工作室.曝光黑客—入侵攻防.隱私安全與密碼保護(hù)技巧全接觸[M].北京:電子科技大學(xué)出版社.2004,7.
[4] 強(qiáng)鋒科技,頊宇峰,馬軍.ASP網(wǎng)絡(luò)編程從入門到精通[M].北京:清華大學(xué)出版社,2006,1.
[5] 張杰,任偉,吳林華.ASP典型模塊設(shè)計[M].北京:清華大學(xué)出版社,2007.