摘要:ASP技術在網頁制作中的廣泛使用,使得人們忽視了它的一些安全問題。該文提出了ASP在使用中會遇到的一些安全問題,也給出了解決方案。
關鍵詞:ASP;漏洞;防護措施
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2009)15-3909-02
ASP Technology to Enable More Secure
WANG Qiu-yi
(Modern Education Technology CenterAnhui University of Finance and Economics,Bengbu 233000 ,China)
Abstract: ASP technology in the production of a wide range of website use, led to the neglect of some of its security problems. In this paper, the ASP will be encountered in the use of a number of security issues, but also gives the solution.
Key words: ASP; Loophole; Protective measures
在互聯網高速發展的今天,網頁制作已經成為一個新型的課題。從早期的靜態網頁到后來的動態網頁,網頁制作的技術已經發展到一個很高的層次,這些動態網頁的出現使得WEB頁面可以方便地傳播動態信息。在目前,比較流行的有ASP、PHP和JSP程序設計語言所編輯的動態頁面。從總的方面來說,ASP、PHP和JSP基本上都是把腳本語言嵌入HTML文檔中,它們最主要的優點是:ASP學習簡單,使用方便;PHP軟件免費,運行成本低;JSP多平臺支持,轉換方便。在目前的大多數的網站建設中用的最多的還是ASP技術,ASP(Active Server Pages)是一種由微軟開發的免編譯的服務器端腳本環境。它將HTML頁面,Scripts語言和動態服務器擴展結合在一起,可以建立動態,交互且高效的WEB服務器應用程序。
1 ASP的特點
使用VBScript、javaScript等簡單易懂的腳本語言,結合HTML代碼,即可快速地完成網站的應用程序。
無須編譯,可以直接解釋執行。
使用普通的文本編輯器即可進行頁面的編輯與設計。
獨立瀏覽器,用戶端只要使用可執行HTML代碼的瀏覽器,即可瀏覽ASP所設計的網頁內容。
ASP能與任何ActiveX Scripting語言相容。
源程序不會外漏,ASP腳本是在服務器上執行,不會被傳到客戶瀏覽器,因而可以避免所寫的源程序被他人剽竊,也提高了程序的安全性。
面向對象。ActiveX Server Components具有無限可擴充性。
2 ASP的工作原理
1) 用戶向瀏覽器地址欄輸入網址,默認頁面的擴展名是.asp。
2) 瀏覽器向服務器發出請求。
3) 服務器引擎開始運行ASP程序。
4) ASP文件按照從上到下的順序開始處理,執行腳本命令,執行HTML頁面內容。
5) 頁面信息發送到瀏覽器。
3 ASP技術在網頁中的安全隱患和防護措施
3.1 SQL注入式攻擊
SQL注入就是客戶端提交特殊的代碼,從而收集程序及服務器的信息,獲取想得到的資料。由于ASP程序員在編寫程序時不規范,代碼存在漏洞,動態生成sq1命令時沒有對用戶輸人的數據進行驗證而受到攻擊。例如,在測試中,輸入一個已經存在的用戶名:administrator,密碼輸人“1’or‘1’ =‘1”,單擊登錄按鈕,非法登錄成功。
防范措施:
只有用戶名和密碼完全正確才能通過驗證。另外,編寫代碼時在處理類似留言板、論壇等輸人框的ASP程序中,最好屏蔽掉HTML、Javasc印t、vBScriPt語句,并且要對輸人的字符進行限制,特別是一些特殊字符,比如單引號、雙引號、分號、逗號、冒號、連接號等進行轉換或者過濾,同時也應對輸人的字符長度進行限制。而且要在客戶端進行輸人合法性檢查,同時要在服務器端程序中進行類似檢查。
還有一種方法就是先查詢用戶名,再進行密碼驗證,將這一段驗證代碼
SqlConnection MyConnection=new SqlConnection
(ConnectionString);
Strsql =\"Select * from用戶帳號where
name='\"+strUserName+\"'and password='\"+strPassword+\"'\";
SqlCommand MyCommand=new SqlCommand(strsql,MyConnection);
MyConnection.Open();
SqlDataReader MyReader=MyCommand.ExecuteReader();
if(MyReader.Read())
{
登 錄 成 功
}
分成兩部分執行,即
Strsql =\"Select* from用戶帳號where name='\"+strUserName+\"';
SqlDataReader MyReader=MyCommand.ExecuteReader();
While(MyReader.Read())
{
if ( MyReader[\"password\"]==strpassword)
{
登 錄 成 功
}
3.2 木馬漏洞
入侵者一般是通過ASP程序上傳功能的漏洞進人后臺上傳ASP木馬程序。當木馬一旦上傳上去就有可能取得網站的管理權限,修改或刪除文件、數據庫,篡改網站的主頁。因此ASP木馬的防范也尤為重要。
防范措施 :
1) 建議用戶通過ftp來上傳、維護網頁,盡量不安裝ASP的上傳程序。
2) 對ASP上傳程序的調用一定要進行身份認證,并只允許信任的人使用上傳程序。
3) 上傳文件時,要限制文件的擴展名。比如:上傳圖片文件時,設置為只能上傳擴展名.jpg或者.gif的文件,拒絕上傳擴展名為.asp 或.exe的文件。
4) 到正規網站下載ASP程序,下載后要對其數據庫名稱和存放路徑進行修改,數據庫文件名稱也要有一定復雜性。
5) 日常要多維護,經常查看在文件夾里有沒有不正常的*.asp或*.exe文件,特別是放置上傳文件的文件夾內,數據庫中有沒有陌生的數據表。一旦發現被入侵,立即刪除文件。
6) 要經常備份數據庫、網頁等重要文件,一旦被木馬破壞,能及時還原,減少損失。
7) 網站的后臺也是非常關鍵的。不要在頁面上作后臺的地址鏈接,這樣后臺地址不容易被猜解。網站后臺的管理賬號密碼不應過于簡單,并且要使用附加碼。
3.3 登陸頁面被繞過
在程序開發過程中,要編寫ASP代碼設置權限驗證,像一些機密信息或內容信息的網頁,是對內部人員或者網站管理人員開放的。在留言板系統中,普通的用戶只能發表和查看留言,只有管理員才能刪除或修改一些留言,所以在要進入這些頁面,都要經過一個身份驗證,沒有合法身份的用戶是不得進入的。但對于安全性不強的系統,用戶在知道相關葉面目錄的情況下,直接在地址欄中輸人URI路徑,就可以進人頁面。那樣的話,用戶驗證就只成了擺設。
防范措施:
為了避免這類情況發生,應該把后臺登錄頁面與后臺管理頁面進行綁定,只要通過了后臺登錄頁面的合法身份驗證的用戶才能進入后臺管理頁面,其他方式的進入一概是不允許的。程序員在編程時能考慮到這點的話,入侵者就無法繞過用戶驗證了。
3.4 Access數據庫下在漏洞
在采用ASP+Access技術建設的網站中,如果有人通過各種方法獲得或者猜到數據庫的存儲路徑和文件名,則該數據庫就可以被下載到本地。例如:對于校園網新聞數據庫,一般命名為news.mdb、xinwen .mdb等。存儲路徑一般為“URL/database”或放在根目錄“URL”下。這樣,只要敲人地址:“URL/database/news.mdb”,數據庫就可以被下載。
防范措施:
1) 非常規命名法。為Access數據庫文件起個復雜的非常規的名字,并把它放在幾層目錄下。所謂“非常規”,打個比方說,比如有
個數據庫要保存的是有關書籍的信息,可不要給它起個“book.mdb”的名字,而要起個非常規的名稱,比如faklh945ioagah.mdb,并把它放在如:/hdye92/89hjg/hgdggdkl/的幾層目錄下。也可以將 Access數據庫的文件*.mdb改名為*.asp或*.asa,即使瀏覽者獲知了數據庫文件的具體地址,當瀏覽者試圖下載這些*.asp文件時,瀏覽者將會碰到訪問錯誤,數據庫在瀏覽器以亂碼顯示,同時在數據庫的連接字符串,我們將相應的氣mdb改為*.asp或*.asa 也不會影響程序對數據庫的正常訪問。這樣黑客要想通過猜的方式得到你的Access數據庫文件就難上加難了。
2) 使用ODBC數據源。在ASP程序設計中,不要把數據庫名寫在程序中,比如:conn.ConnectionString=”Provider=-Microsoft.Jet.OLEDB.4.0;””Data Source=”Server.MapPath(”book.mdb”)、就算文件名起的再復雜,一旦被人拿到了源程序,數據庫就會很容易被下載下來。如果使用ODBC數據源就可以避免這樣的問題發生了。在程序中這樣寫:Conn.open”ODBC-DSN名”,就無法從源代碼中看到數據庫的名字和存放路徑了。
3) 使用Access來為數據庫文件編碼及加密。首先在“工具→安全→加密/解密數據庫”中選取數據庫(如:book.mdb),然后按確定,接著會出現“數據庫加密后另存為”的窗口,可存為:“bookl.mdb”。要注意的是,以上的動作并不足對數據庫設置密碼,而只足對數據庫文件加以編碼,目的是為了防止他人使用別的工具來查看數據庫文件的內容。接下來我們為數據庫加密,首先打開經過編碼了的bookl.mdb,在打開時,選擇“獨占”方式。然后選取功能表的“工具→安全→設置數據庫密碼”,接著輸入密碼即可。這樣即使他人得到了bookl.mdb文件,沒有密碼他也是無法看到bookl.mdb中的內容。
3.5 Access數據庫被解密
由于很多開發者使用數據庫時,采用系統自帶的加密方法,特別是access數據庫的加密機制比較簡單,解密起來也很容易,這就給數據庫的安全帶來很大的隱患。
防范措施:
為確保數據庫的完整,免遭破壞、泄密和竊取,主要采用數據備份、用戶標識和鑒定、存取控制、數據庫的加密(如RAS密碼或md5加密技術),同時利用DBMS(數據庫管理系統)所提供的各種安全措施,在應用軟件卜增加對數據的操作安全、對算法進行加密操作等。
4 總結
本文分析了ASP服務器端腳本編寫環境存在的一些安全方面的漏洞和幾種常見的保護方法。網站安全是一個較為復雜的問題,完全的安全的網絡系統是不存在的,我們只有通過不斷的改進程序,將各種可能出現的問題考慮周全,養成良好的安全的習慣,盡量避免留下一些安全漏洞,對潛在的異常悄況進行處理,才能減少被黑客入侵的機會。
參考文獻:
[1] 齊建玲,郭鐵柱,劉博濤,等 . 網頁設計與制作實用技術[M]. 北京:中國水利水電出版社,2005.
[2] 周新會,傅立宏. ASP通用模塊及典型系統開發[M]. 北京:人民郵電出版社,2006.
[3] 潘飛,王繼承 趙裕國,劉占文. ASP網站安全問題的研究[J]. 網絡安全技術與應用,2008,6:80-81.
[4] 朱杰. 構建ASP網站的安全性分析[J].科教文匯,2007,5:192.
[5] 郜亞麗,許偉超. 基于ASP網站的安全漏洞及防護策略研究[J].河南廣播電視大學學報,2007,20(4):112-13.
[6] 徐秀軍,劉磊. 基于ASP開發的網站安全淺析[J].科技信息,2008,8:51.
[7] 丁亞濤. ASP構建動態網站的通用方法[J].安慶師范學院學報(自然科學報),2006,12(4):22-24.
[8] 劉好增,張坤. ASP動態網站開發實踐教程[M].北京:清華大學出版社,2006.