asp.net 如何在asp.net保護檔案 簡介如果我們做網站是用Access資料庫作為資料來源,則我們最關心的是Access資料庫檔案的安全問題。如果我們將存有重要訊息(如密碼、付款資訊、個人私人的資料等等)的.mdb檔案,放在Web伺服器上可訪問的目錄中,任何一個人若猜到資料庫檔案名就可以通過瀏覽器或其他下載工具進行下載,這是非常危險的。 有許多方法對.mdb資料庫檔案進行保護,甚至任何一個你想保護的檔案。最直接有效方法是把.mdb資料庫檔案放在web伺服器non-web accessible目錄中。許多web伺服器中,都提供一個特殊的可讀寫的database目錄,但它是不準以網頁形式進行訪問的。 理解IIS和asp.net如何工作當訪問一個從IIS伺服器請求時,IIS ISAPI(Internet server application programming interface ,英特網伺服器應用編程介面)會對被訪問檔案的副檔名進行檢查,其訪問的檔案類型是否被web伺服器解析器屏蔽。 Web伺服器預設時,IIS對於簡單的請求會返回其檔案包含的內容。它會解析出所認知的存在的檔案,如圖片、html頁面、CSS檔案、擴充的Javascript檔案等,例如,當訪問一個html檔案時,IIS返回它所包含的內容資訊。 對於內容是動態產生的檔案,ISAPI對請求的檔案進行動態產生內容。比如,一個用asp語言做的網站,其.asp的檔案會映射到擴充了的asp.dll英特網伺服器應用編程介面中進行解析。擴充了的Asp.dll英特網伺服器應用編程介面自動解析web伺服器請求的asp頁並返回產生的html檔案內容。如果你的網站是使用asp.net語言寫的,IIS則會把.aspx檔案對應給擴充了的aspnet_isapi.dll英特網伺服器應用編程介面,當aspnet_isapi.dll接受到.aspx檔案的請求時,擴充了的aspnet_isapi.dll英特網伺服器應用編程介面在進程中自動產生為html檔案的內容。 擴充了的aspnet_isapi.dll英特網伺服器應用編程介面是一個非託管的代碼。它不能在.net Framwork中運行。當IIS發送請求到擴充的英特網伺服器應用編程介面,即aspnet_isapi.dll在asp.net引擎上轉寄它的請求並通過.Net FramworkManaged 程式碼進行解析 。 ASP.NET引擎非常接近於IIS,就好像IIS有一個目錄將指定的檔案類型映射到ISAPI上,但ASP.NET引擎將檔案類型映射到HTTP Handlers。一個HTTP Handler 是一個為特定檔案類型自動產生的Managed 程式碼。例如,ASP.NET是用
PageHandlerFactory產生的;網路服務的
SOAP響應是用
WebServiceFactoryHandler產生的。PageHandlerFactory
知道如何將一個ASP.NET網頁解析為HTML檔案;
WebServiceFactoryHandler
知道如何將接收到的SOAP響應為其調用正確的網路服務的方法並返回正確格式的SOAP響應。 測試HttpForbiddenHandlerASP.NET網路應用程式是通過XML格式檔案進行配置的,即Web.config檔案。此檔案包含的主要資訊有:● 據庫連接字串● 認證使用者的資訊,可包括使用者名稱和蜜碼● 其他相關的緩衝、編碼等配置資訊 花點時間,你試著訪問一個ASP.NET網路應用程式的Web.config檔案,結果如何?很明顯,允許所有網路訪問者看到ASP.NET網路應用程式的Web.config檔案的內容是很危險的,所以,ASP.NET 網路應用程式已配置aspnet_isapi.dll將.mdb檔案類型過濾掉。 如何在訪問Web.config檔案時阻止呢?在IIS中,.config檔案對應到ASP.NET ISAPI上,那麼ASP.NET引擎會把請求的.config檔案對應到HttpforbiddenHandler HTTP handler,接著HttpForbiddenHandler HTTP handler 通過網頁瀏覽器以HTML的格式返回給使用者。 現在我們來看如何在ASP.NET中使用HttpForbiddenHandler HTTP handler 來保護.config檔案,我們也可以參照此技術來保護.cs、.vb、.webinfo、.vbproj、.csproj、.resx等其他檔案類型。同樣地,我們用此技術來保護Access資料庫檔案(.mdb檔案)或是任何一個檔案類型。在下面章節中,我們將看到保護指定檔案類型的必要步驟。 保護.mdb檔案為了達到保護.mdb資料庫檔案類型和.config檔案類型,我們必須設定以下兩個步驟:1. 配置IIS,將.mdb檔案類型映射到ASP.NET ISAPI2. 配置ASP.NET,將.mdb檔案類型映射到HttpForbiddenHandler HTTP handler 你必須在網頁伺服器上在IIS中,將.mdb檔案類型映射到aspnet_isapi.dll ISAPI上。登入到網頁伺服器,通過[開始]—>[管理工具]—>[網際網路服務管理員],下一步,在某一個網站上右擊,會出現彈出式菜單,接著選擇[屬性]彈出此網站的屬性對話方塊,點擊[主目錄]選項卡,點擊[配置]按鈕,則會顯示[應用程式配置]對話方塊,如下所示
Windows NT/2000/XP |
Windows 2003 |
|
|
點擊[添加]增加一個映射,這時會顯示一個對話方塊,要你輸入ISAPI的檔案名稱,此檔案名稱可以是.exe或是.dll檔案,它會阻止使用者請求時的特殊檔案類型(你也可以阻止其檔案類型的所有HTTP請求(GET和POST)或是特定的HTTP動作)那麼,輸入*.mdb斷行符號,選擇可執行檔檔案為ISAPI為aspnet_isapi.dll(此檔案可以在當前
$WINDOWS_DIR$\Microsoft.Net\Framework\$VERSION$
中找到)。 現在我們已配好.mdb過濾器,我們還要做最後一步:使網路應用程式.mdb檔案類型映射到HttpForbiddenHandler HTTP 控制代碼。為了達到這上步,我們必須將下面的配置加到Web.config檔案中:
<httpHandlers> <add verb="*" path="*.mdb" type="System.Web.HttpForbiddenHandler" /> </httpHandlers> |
必須將此段代碼放在<system.web>這一節中,當前的網路應用程式在訪問該程式使用的.mdb時,就會阻止訪問。
如果你想將所有的網路應用程式都無法訪問*.mdb檔案類型,將<add verb="*" path="*.mdb" type="System.Web.HttpForbiddenHandler" />
加入到machine.config檔案的<httpHandlers>節中。(machine.config可在$WINDOWS_DIR$\Microsoft.Net\Framework\$VERSION$\CONFIG
目錄中找到)