用IIS+ASP+Access構建網站的安全性分析

來源:互聯網
上載者:User
access|asp+|iis|安全|安全性

    隨著Internet的發展,Web技術日新月異,人們已經不再滿足於靜態HTML技術,更多的是要求動態、互動的網路技術。繼通用閘道介面(CGI)之後,微軟推出的IIS+ASP的解決方案作為一種典型的伺服器端網頁設計技術,被廣泛應用在網上銀行、電子商務、網上調查、網上查詢、BBS、搜尋引擎等各種互連網應用中。與此同時,Access資料庫作為微軟推出的以標準JET為引擎的案頭型資料庫系統,由於具有操作簡單、介面友好等特點,具有較大的使用者群體。目前,IIS+ASP+Access是中小型Internet網站的首選方案。但是,該解決方案在為我們帶來便捷的同時,也帶來了嚴峻的安全問題。

  一、安全隱患分析

  IIS+ASP+Access解決方案的主要安全隱患來自Access資料庫的安全性,其次在於ASP網頁設計過程中的安全意識和措施。

  1.資料庫可能被下載

  在IIS+ASP+Access網站中,如果有人通過各種方法獲得或者猜到資料庫的儲存路徑和檔案名稱,則該資料庫就可以被下載到本地。例如:對於網上書店資料庫,一般命名為book.mdb、store.mdb等,儲存路徑一般為“URL/database”或放在根目錄“URL/”下,這樣,任何人敲入地址:“URL/database/store.mdb”, 資料庫就可以被下載了。

  2.資料庫可能被解密

  由於Access資料庫的加密機制比較簡單,即使設定了密碼,解密也很容易。該資料庫系統通過將使用者輸入的密碼與某一固定密鑰(例如: Access 97為86 FB EC 37 5D 44 9C FA C6 5E 28 E6 13)進行“異或”來形成一個加密串,並將其儲存在*.mdb檔案從地址“&H42”開始的地區內。我們可以輕鬆地編製解密程式,一個幾十行的小程式就可以輕鬆地獲得任何Access資料庫的密碼。因此,只要資料庫被下載,其資訊就沒有任何安全性可言了。

  3.ASP頁面的安全性

  (1)原始碼安全性隱患。由於ASP程式採用非編譯性語言,大大降低了程式原始碼的安全性。如果駭客侵入網站,就可以獲得ASP原始碼;同時對於租用伺服器的使用者,因個別伺服器出租商的職業道德問題,也會造成ASP應用程式原始碼泄露。

  (2)程式設計中容易被忽視的安全性問題。ASP代碼使用表單實現互動,而相應的內容會反映在瀏覽器的地址欄中,如果不採用適當的安全措施,只要記下這些內容,就可以繞過驗證直接進入某一頁面。例如在瀏覽器中敲入“...page.asp?x=1”,即可不經過表單頁面直接進入滿足“x=1”條件的頁面。因此,在驗證或註冊頁面中,必須採取特殊措施來避免此類問題的產生。

  二、提高IIS+ASP網站安全性的方法

  1.防止資料庫被下載

  由於Access資料庫加密機制過於簡單,有效地防止資料庫被下載,就成了提高ASP+Access解決方案安全性的重中之重。以下兩種方法簡單、有效。

  (1)非常規命名法。為Access資料庫檔案起一個複雜的非常規名字,並把它放在幾個目錄下。例如,對於網上書店的資料庫,我們不把它命名為“book.mdb”或“Store.mdb”,而是起個非常規的名字,例如:faq9jl.mdb,再把它放在如./akkt/kj61/acd/av5 的幾層目錄下,這樣駭客想通過猜的方式得到Access資料庫檔案名就很難了。

  (2)使用ODBC資料來源。在ASP程式設計中,如果有條件,應盡量使用ODBC資料來源,不要把資料庫名寫在程式中,否則,資料庫名將隨ASP原始碼的失密而一同失密,例如:

  DBPath = Server.MapPath(“./akkt/kj61/acd/av5/faq9jl.mdb ”)
  conn.open “driver={Microsoft Access Driver (*.mdb)};dbq=”& DBPath

  可見,即使資料庫名字起得再怪異,隱藏的目錄再深,ASP原始碼失密後,也很容易被下載下來。如果使用ODBC資料來源,就不會存在這樣的問題了:

  conn.open “ODBC-DSN名”

  2.對ASP頁面進行加密

  為有效地防止ASP原始碼泄露,可以對ASP頁面進行加密。我們曾採用兩種方法對ASP頁面進行加密。一是使用組件技術將編程邏輯封裝入DLL之中;二是使用微軟的Script Encoder對ASP頁面進行加密。使用組件技術存在的主要問題是每段代碼均需組件化,操作比較繁瑣,工作量較大,而使用Encoder對ASP頁面進行加密,操作簡單、收效良好。Script Encoder的運行程式是SCRENC.EXE,使用方法是:

  SCRENC [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile

  其中:/s 是屏蔽螢幕輸出;/f 指定輸出檔案是否覆蓋同名輸入檔案;/xl 指是否在.asp檔案的頂部添加@Language指令;/l defLanguag指定預設的指令碼語言; /e defExtension 指定待加密檔案的副檔名。

  3.註冊驗證

  為防止未經註冊的使用者繞過註冊介面直接進入應用系統,我們採用Session對象進行註冊驗證。例如,我們製作了下面的註冊頁面。

  設計要求註冊成功後系統啟動hrmis.asp?page=1頁面。假設,不採用Session對象進行註冊驗證,則使用者在瀏覽器中敲入“URL/hrmis.asp?page=1”即可繞過註冊介面,直接進入系統。

  在此,利用Session對象進行註冊驗證:

  <%

  ’讀取使用者所輸入的帳號和密碼

  UserID = Request(“UserID”)
  Password = Request(“Password”)

  ’檢查UserID 及Password 是否正確

  If UserID <>“hrmis” Or Password <>“password” Then

  Response.Write “帳號錯誤!”

  Response.End

  End If

  ’將Session 對象設定為通過驗證狀態

  Session(“Passed”) = True

  %>

  進入應用程式後,首先進行驗證:

  <%

  ’如果未通過驗證,返回Login狀態

  If Not Session(“Passed”) Then

  Response.Redirect “Login.asp”

  End If

  %>

  通過對IIS+ASP+Access網上應用系統安全性的研究,我們對現有系統進行了改造,收到了較好的效果。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。