2345技术员联盟

asp教程十:維護 ASP 應用程序的安全

  • 来源:未知 原创
  • 时间:2018-08-07
  • 阅读:
  • 本文标签:

千萬不要輕視正確配置安全設置的重要性。如果不正確配置安全設置,不但會使您的 ASP 應用程序遭受不必要的篡改,而且會妨礙正當用戶訪問您

的 .asp 文件。


Web 服務器提供了各種方法來保護您的 ASP 應用程序免受未授權的訪問和篡改。在您讀完本主題下的安全信息之後,請花一定的時間仔細檢查一下

您的 Windows NT 和 Web 服務器安全性文檔。詳細信息,請參閱 安全性。


NTFS 權限


您可以通過為單獨的文件和目錄應用 NTFS 訪問權限來保護 ASP 應用程序文件。NTFS 權限是 Web 服務器安全性的基礎,它定義了一個或一組用戶

訪問文件和目錄的不同級別。當擁有 Windows NT 有效帳號的用戶試圖訪問一個有權限限制的文件時,計算機將檢查文件的 訪問控制表 (ACL)。該

表定義了不同用戶和用戶組所被賦予的權限。如果用戶的帳號具有打開文件的權限,計算機則允許該用戶訪問文件。例如,Web 服務器上的 Web 應

用程序的所有者需要有“更改”權限來查看、更改和刪除應用程序的 .asp 文件。但是,訪問該應用程序的公共用戶應僅被授予“只讀”權限,以便

將其限制為只能查看而不能更改應用程序的 Web 頁。


維護 Global.asa 的安全


為了充分保護 ASP 應用程序,一定要在應用程序的 Global.asa 文件上為適當的用戶或用戶組設置 NTFS 文件權限。如果 Global.asa 包含向瀏覽

器返回信息的命令而您沒有保護 Global.asa 文件,則信息將被返回給瀏覽器,即便應用程序的其他文件被保護。


有關配置 NTFS 權限的詳細信息,請參閱 訪問控制。


註意 一定要對應用程序的文件應用統一的 NTFS 權限。例如,如果您不小心過度限制了一應用程序需要包含的文件的 NTFS 權限,則用戶可能無法

查看或運行該應用程序。為了防止此類問題,在為您的應用程序分配 NTFS 權限之前應仔細計劃。


Web 服務器權限


您可以通過配置您的 Web 服務器的權限來限制所有用戶查看、運行和操作您的 ASP 頁的方式。不同於 NTFS 權限提供的控制特定用戶對應用程序文

件和目錄的訪問方式, Web 服務器權限應用於所有用戶,並且不區分用戶帳號的類型。


對於要運行您的 ASP 應用程序的用戶,在設置 Web 服務器權限時,必須遵循下列原則:


對包含 .asp 文件的虛擬目錄允許“讀”或“腳本”權限。


對 .asp 文件和其他包含腳本的文件(如 .htm 文件等)所在的虛目錄允許“讀”和“腳本”權限。


對包含 .asp 文件和其他需要“執行”權限才能運行的文件(如 .exe 和 .dll 文件等)的虛目錄允許“讀”和“執行”權限。


有關配置 Web 服務器權限的詳細信息,請參閱 訪問控制。


腳本映射文件


應用程序的腳本映射保證了 Web 服務器不會意外地下載 .asp 文件的源代碼。例如,即使您為包含了某個 .asp 文件的目錄設置了“讀”權限,只

要該 .asp 文件隸屬於某個腳本映射應用程序,那麽您的 Web 服務器就不會將該文件的源代碼返回給用戶。


Cookie 安全性


ASP 使用 SessionID cookie 跟蹤應用程序訪問或會話期間特定的 Web 瀏覽器的信息。這就是說,帶有相應的 cookie 的 HTTP 請求被認為是來

自同一 Web 瀏覽器。Web 服務器可以使用 SessionID cookies 配置帶有用戶特定會話信息的 ASP 應用程序。例如,如果您的應用程序是一個允許

用戶選擇和購買 CD 唱盤的聯機音樂商店,就可以用 SessionID 跟蹤用戶漫遊整個應用程序時的選擇。


SessionID 能否被黑客猜中?


為了防止計算機黑客猜中 SessionID cookie 並獲得對合法用戶的會話變量的訪問,Web 服務器為每個 SessionID 指派一個隨機生成號碼。每當用

戶的 Web 瀏覽器返回一個 SessionID cookie 時,服務器取出 SessionID 和被賦予的數字,接著檢查是否與存儲在服務器上的生成號碼一致。若

兩個號碼一致,將允許用戶訪問會話變量。這一技術的有效性在於被賦予的數字的長度(64 位),此長度使計算機黑客猜中 SessionID 從而竊取用

戶的活動會話的可能性幾乎為 0。


加密重要的 SessionID Cookie


截獲了用戶 sessionID cookie 的計算機黑客可以使用此 cookie 假冒該用戶。如果 ASP 應用程序包含私人信息,信用卡或銀行帳戶號碼,擁有竊

取的 cookie 的計算機黑客就可以在應用程序中開始一個活動會話並獲取這些信息。您可以通過對您的 Web 服務器和用戶的瀏覽器間的通訊鏈路加

密來防止 SessionID cookie 被截獲。有關加密的詳細信息,請參閱 安全性。


使用身份驗證機制保護被限制的 ASP 內容


您可以要求每個試圖訪問被限制的 ASP 內容的用戶必須要有有效的 Windows NT 帳號的用戶名和密碼。每當用戶試圖訪問被限制的內容時,Web 服

務器將進行身份驗證,即確認用戶身份,以檢查用戶是否擁有有效的 Windows NT 帳號。


Web 服務器支持以下幾種身份驗證方式:


基本身份驗證 提示用戶輸入用戶名和密碼。


Windows NT 請求/響應式身份驗證 從用戶的 Web 瀏覽器通過加密方式獲取用戶身份信息。


然而,Web 服務器僅當禁止匿名訪問或 Windows NT 文件系統的權限限制匿名訪問時才驗證用戶身份。詳細信息,請參閱 關於身份驗證。


保護元數據庫


訪問元數據庫的 ASP 腳本需要 Web 服務器所運行的計算機的管理員權限。在從遠程計算機上運行這些腳本時,須經已通過身份驗證的連接,如使用

 Windows NT 請求/響應驗證方式進行連接。應該為管理級 .asp 文件創建一個服務器或目錄並將其目錄安全驗證方式設置為 Windows NT 請求/響

應式身份驗證。目前,僅 Microsoft Internet Explorer version 2.0 或更高版本支持 Windows NT 請求/響應式身份驗證。


使用 SSL 維護應用程序的安全


Secure Sockets Layer (SSL) 3.0 協議作為 Web 服務器安全特性,提供了一種安全的虛擬透明方式來建立與用戶的加密通訊連接。SSL 保證了 

Web 內容的驗證,並能可靠地確認訪問被限制的 Web 站點的用戶的身份。


通過 SSL,您可以要求試圖訪問被限制的 ASP 應用程序的用戶與您的服務器建立一個加密連接;以防用戶與應用程序間交換的重要信息被截取。詳

細信息,請參閱 加密。


維護包含文件的安全


如果您從位於沒有保護的虛擬根目錄中的 .asp 文件中包含了位於啟用了 SSL 的目錄中的文件,則 SSL 將不被應用於被包含文件。因此,為了保證

應用 SSL,應確保包含及被包含的文件都位於啟用了 SSL 的目錄中。


客戶資格認證


控制對您的 ASP 應用程序訪問的一種十分安全的方法是要求用戶使用 客戶資格 登錄。客戶資格是包含用戶身份信息的數字身份證,它的作用與傳

統的諸如護照或駕駛執照等身份證明相同。用戶通常從委托的第三方組織獲得客戶資格,第三方組織在發放資格證之前確認用戶的身份信息。(通

常,這類組織要求姓名、地址、電話號碼及所在組織名稱;此類信息的詳細程度隨給予的身份等級而異。)


每當用戶試圖登錄到需要資格驗證的應用程序時,用戶的 Web 瀏覽器會自動向服務器發送用戶資格。如果 Web 服務器的 Secure Sockets Layer 

(SSL) 資格映射特性配置正確,那麽服務器就可以在許可用戶對 ASP 應用程序訪問之前對其身份進行確認。


用於處理資格證明的 ASP 腳本


作為 ASP 應用程序開發人員,您可以編寫腳本來檢查資格是否存在並讀取資格字段。例如,您可以從資格證明中訪問用戶名字段和公司名字段。

Active Server Pages 在 Request 對象的 ClientCertificate 集合中保存資格信息。詳細信息,請參閱 ASP 內建對象。


必須將 Web 服務器配置為接受或需要客戶資格,然後才能通過 ASP 處理客戶資格;否則,ClientCertificate 集合將為空。


--------------------------------------------------------------------------------


創建事務性腳本


商業應用程序常常需要具有在事務內部運行腳本和組件的能力。事務是一種服務器操作,即使該操作包括很多步驟(例如,定貨、查看存貨、付帳

等),也只能整體返回操作是成功還是失敗。用戶可以創建在事務內部運行的 ASP 腳本,如果腳本的任何一部分失敗,整個事務都將會終止。


ASP 事務處理是以 Microsoft? Transaction Server (MTS) 為基礎的。Microsoft? Transaction Server (MTS) 是一個事務處理系統,用於開

發、配置和管理高性能、可分級的、有魯棒性的企業 Internet 和 Intranet 服務器應用程序。Transaction Server 為開發分布式的,基於組件的

應用程序提供了一個應用程序設計模型。它也為配置和管理這些應用程序提供了一個運行環境。


創建事務性腳本的功能內置在 Internet Information Server 和 Personal Web Server 中。如果您安裝了 Microsoft Transaction Server,

就可以將組件打包,以使組件在事務內部運行。有關組件打包的詳細信息,請參閱 創建 MTS 包。


關於事務


事務是整體成功或失敗的操作。事務處理用於對數據庫進行可靠地更新。在對數據庫進行許多相關更改或同時更新多個數據庫時,要保證所有更改都

被正確執行。如果這些更改中的任何一個失敗,都需要恢復數據庫表的原始狀態。


如果沒有 MTS,您就需要編寫腳本和組件,手工跟蹤請求的更改情況,以便在某些更改失敗時恢復數據。使用 MTS,您只需簡單的將您的腳本和組件

聲明為“需要事務”並讓 MTS 處理事務的一致性。事務處理只適用於數據庫訪問;MTS 不能對文件系統或其他的非事務性資源的更改進行恢復操

作。應用程序所訪問的數據庫必須為 MTS 所支持。目前,MTS 支持 SQL Server 及任何支持 XA 協議(由 X/Open 協會制定)的服務器。MTS 將繼

續擴展對其他數據庫的支持。


事務不能跨越多個 ASP 頁。如果一個事務需要來自多個組件的對象,則須將使用這些對象的操作組合在一個 ASP 頁中。例如,假定有一個組件用於

更新工資單數據庫,還有一個組件用於更新人力資源數據庫中的員工記錄。為了記錄一個員工的新的工資信息,您需要編寫這樣一個腳本,該腳本在

一個事務環境中調用這兩個組件,一個用於更新工資單數據庫,另一個用於更新人力資源數據庫中的員工等級。


聲明事務性腳本


在將一個頁聲明為事務性時,此頁中的任何腳本命令和對象都運行在同一個事務環境中。Transaction Server 處理生成事務的細節並決定事務成功

(提交)或失敗(終止)。要將某個頁聲明為事務性,可在頁首添加 @TRANSACTION 指令:


<%@ TRANSACTION = value %>


value 參數可以是下列之一:


值 意義


Requires_New 啟動一個新的事務。


Required 啟動一個新的事務。


Supported 不啟動事務。


Not_Supported 不啟動事務。


@TRANSACTION 指令必須在一頁中的第一行,否則將產生錯誤。必須將該指令添加到需要在事務下運行的每一頁中。當腳本處理結束時,當前事務即

告結束。


大多數應用程序只有一些特定的操作需要事務環境。例如,一個航空公司的站點可能只需要事務性腳本處理購票和安排座位,而其他所有腳本則無須

事務環境即可安全運行。因為事務只須用於需要事務處理的頁即可,不要將應用程序的 Global.asa 文件聲明為事務性。


如果事務被終止,Transaction Server 將恢復對支持事務的資源的任何更改。目前,僅數據庫服務器完全支持事務,因為數據庫中的數據對於企業

應用是最為關鍵的。Transaction Server 不對硬盤上的文件、會話和應用程序的變量、集合等的改變進行恢復。然而您可以如下文主題所述,通過

編寫事務事件來編寫恢復變量和集合的腳本。在某些時候,您的腳本也可以顯式的提交或終止一個事務,如向文件寫數據失敗時。


提交或終止腳本


因為 Transaction Server 跟蹤事務處理,所以它決定事務是完全成功還是失敗。腳本可以通過調用 ObjectContext.SetAbort 顯式地聲明終止一

個事務。 例如,當一個事務在從一個組件收到錯誤消息、違反商業規範時(例如,帳戶余額小於 0)或讀寫文件等非事務性操作失敗時,腳本就需

要終止該事務。如果頁在事務完成之前超時,也必須終止事務。


編寫事務事件


腳本本身不能決定事務是成功還是失敗。但是,可以編寫提交或終止事務時被調用的事件。例如,假設有一個確認銀行帳戶的腳本,並且您需要針對

事務的不同狀態將不同的頁返回給用戶,那麽就可以使用 OnTransactionCommit 和 OnTransactionAbort 事件來編寫對用戶的不同響應。


<%@ TRANSACTION = Required %>


<%


'Buffer output so that different pages can be displayed.


Response.Buffer = True


%>


<HTML>


<BODY>


<H1>Welcome to the online banking service</H1>


<%


Set BankAction = Server.CreateObject("MyExample.BankComponent")


BankAction.Deposit(Request("AcctNum"))


%>


<P>Thank you. Your transaction is being processed.</P>


</BODY>


</HTML>


<%


' Display this page if the transaction succeeds.


Sub OnTransactionCommit()


Response.Write "<HTML>"


Response.Write "<BODY>"


Response.Write "Thank you. Your account has been credited."


Response.Write "</BODY>"


Response.Write "</HTML>"


Response.Flush()


end sub


%>


<%


' Display this page if the transaction fails.


Sub OnTransactionAbort()


Response.Clear()


Response.Write "<HTML>"


Response.Write "<BODY>"


Response.Write "We are unable to complete your transaction."


Response.Write "</BODY>"


Response.Write "</HTML>"


Response.Flush()


End sub


%>


在 MTS 資源管理器中登記一個組件


為了參與一個事務,組件必須在 MTS 包中登記,而且必須被配置為需要事務。例如,如果您的腳本是通過調用兩個組件來處理訂單的,一個更新庫

存數據庫,另一個更新付款數據庫。那麽,這兩個組件就要在同一個事務環境中運行。Transaction Server 保證如果任意一個組件失敗,那麽將不

會有數據庫被更新。某些組件不需要事務;例如,Ad Rotator 組件。


註冊和配置事務性組件可使用 MTS 資源管理器。必須將事務的屬性設置為需要事務或需要新事務。事務組件必須在 MTS 包中註冊。不要將組件放在

 IIS 內部進程包中,而應該創建自己的包。通常,應將所有的組件放在一個組件庫中。組件庫的組件可被多個 ASP 應用程序使用並以 ASP 應用程

序進程運行。使用 MTS 資源管理器可創建新的包並將包的 Activation 屬性設置為 Library。


也可以在 Server 包中註冊事務性組件。Server 包通常以服務器上的一個獨立的進程運行。如果希望使用基於職能組的安全性檢查或希望您的組件

可被遠程計算機上的應用程序訪問,可對事務性組件使用 Server 包。


要使用 MTS 資源管理器,必須安裝 Microsoft Transaction Server。有關註冊組件和選擇包類型的詳細信息,請參閱 創建 MTS 包。


對象作用域


一般情況下,不要將從 MTS 組件中創建的對象存儲在 ASP Application 或 Session 對象中。 MTS 對象在事務完成後消失。因為 Session 對象

和 Application 對象是為在不同 ASP 頁之間使用的對象實例設計的,所以不要用它們保存在事務結束時即被釋放的對象。


ASP 腳本是已聲名的事務的根,即起始點。任何事務性 ASP 頁所使用的 MTS 對象都被認為是事務的一部分。當事務完成後,在頁中使用的 MTS 對

象將消失,其中包括存儲在 Session 或 Application 對象中的對象。在此之後,從另一個事務性頁中調用會話作用域或應用程序作用域對象的嘗

試都將失敗。


事務排隊


從一個遠程服務器對數據庫的更新可能因為網絡延遲或故障而導致事務延遲或終止。因為事務的所有部分都必須提交,所以應用程序將可能掛起,等

待遠程服務器的提交或終止消息,也可能由於無法發送數據庫更新而導致事務被放棄。


對於必須同時完成的更新,正確的做法是在事務的所有參與者都能夠提交之前,終止事務或推遲完成事務。例如,航空公司的定票程序應該同時完成

對客戶的銀行帳號計入借方和對航空公司的銀行帳戶計入貸方。如果一個更新屬於事務整體的一部分,但可能晚於其他更新,您可能不希望讓客戶等

待整個更新過程的完成。例如,機票預定事務可能也要向食品供應商發送食品訂單或更新客戶的旅程津貼。這些操作雖然也必須完成,但可以晚一

些。


Microsoft Message Queue Server 使您能夠將一個或一組更新捆綁到一個事務性消息中送給遠程服務器。Message Queue Server 保證更新將被發

送給遠程服務器,即使目前網絡不可用。您的應用將收到一個提交消息,從而可以繼續處理事務。


有關在 ASP 應用程序中使用消息隊列的示例,請參閱 開發人員範例。要查看這些示例,必須安裝 SDK 文檔。


有關 Microsoft Message Queue Server 的詳細信息,請參閱 Microsoft Message Queue Server。


模塊 1:創建 ASP 頁


請選擇本課的腳本語言


在本模塊中,通過創建自己的 ASP 頁(.asp 文件),您將學習一些 ASP 的基本知識。在這些課程中用到的示例文件,可以在 localhost Web 服

務器的 Tutorial 目錄 (C:\WINNT\Help\iis\htm\tutorial) 中找到。請將您創建的文件也保存到 Tutorial 目錄中。


要點 要保存並查看您在本模塊中的工作結果,必須在 localhost Web 服務器上對 /iishelp/iis/htm/tutorial 虛擬目錄具有“寫 

(Write)”和“改編 Web 服務器 (Script Web server)”權限,當然必須已經安裝了 Active Server Pages。詳細信息,請參閱 設置 Web 服務器

權限。


相关文章

本文来自电脑技术网www.it892.com),转载本文请注明来源.
本文链接:http://www.it892.com/content/web/asp/0PG0QK2018.html

推荐阅读
无觅相关文章插件,快速提升流量