?? 12.htm
字號(hào):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<title>維護(hù) ASP 應(yīng)用程序的安全</title>
</head>
<body>
<p> </p>
<p align="center"><strong><font FACE="宋體" LANG="ZH-CN" SIZE="3"><a
NAME="_Toc442147780"></a></font><a NAME="_Toc442147860"><font FACE="黑體" LANG="ZH-CN"
SIZE="5">維護(hù)</font><font SIZE="5"> </font><font FACE="Arial" SIZE="5">ASP </font><font
FACE="黑體" LANG="ZH-CN" SIZE="5">應(yīng)用程序的安全</font></a></strong></p>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" width="583">
<tr>
<td width="581">千萬(wàn)不要輕視正確配置安全設(shè)置的重要性。如果不正確配置安全設(shè)置,不但會(huì)使您的 ASP 應(yīng)用程序遭受不必要的篡改,而且會(huì)妨礙正當(dāng)用戶(hù)訪(fǎng)問(wèn)您的 .asp 文件。<br>
<br>
Web 服務(wù)器提供了各種方法來(lái)保護(hù)您的 ASP 應(yīng)用程序免受未授權(quán)的訪(fǎng)問(wèn)和篡改。在您讀完本主題下的安全信息之后,請(qǐng)花一定的時(shí)間仔細(xì)檢查一下您的 Windows NT 和 Web 服務(wù)器安全性文檔。詳細(xì)信息,請(qǐng)參閱 安全性。<br>
<br>
NTFS 權(quán)限<br>
<br>
您可以通過(guò)為單獨(dú)的文件和目錄應(yīng)用 NTFS 訪(fǎng)問(wèn)權(quán)限來(lái)保護(hù) ASP 應(yīng)用程序文件。NTFS 權(quán)限是 Web 服務(wù)器安全性的基礎(chǔ),它定義了一個(gè)或一組用戶(hù)訪(fǎng)問(wèn)文件和目錄的不同級(jí)別。當(dāng)擁有 Windows NT 有效帳號(hào)的用戶(hù)試圖訪(fǎng)問(wèn)一個(gè)有權(quán)限限制的文件時(shí),計(jì)算機(jī)將檢查文件的 訪(fǎng)問(wèn)控制表 (ACL)。該表定義了不同用戶(hù)和用戶(hù)組所被賦予的權(quán)限。如果用戶(hù)的帳號(hào)具有打開(kāi)文件的權(quán)限,計(jì)算機(jī)則允許該用戶(hù)訪(fǎng)問(wèn)文件。例如,Web 服務(wù)器上的 Web 應(yīng)用程序的所有者需要有“更改”權(quán)限來(lái)查看、更改和刪除應(yīng)用程序的 .asp 文件。但是,訪(fǎng)問(wèn)該應(yīng)用程序的公共用戶(hù)應(yīng)僅被授予“只讀”權(quán)限,以便將其限制為只能查看而不能更改應(yīng)用程序的 Web 頁(yè)。<br>
<br>
維護(hù) Global.asa 的安全<br>
<br>
為了充分保護(hù) ASP 應(yīng)用程序,一定要在應(yīng)用程序的 Global.asa 文件上為適當(dāng)?shù)挠脩?hù)或用戶(hù)組設(shè)置 NTFS 文件權(quán)限。如果 Global.asa 包含向?yàn)g覽器返回信息的命令而您沒(méi)有保護(hù) Global.asa 文件,則信息將被返回給瀏覽器,即便應(yīng)用程序的其他文件被保護(hù)。<br>
<br>
有關(guān)配置 NTFS 權(quán)限的詳細(xì)信息,請(qǐng)參閱 訪(fǎng)問(wèn)控制。<br>
<br>
注意 一定要對(duì)應(yīng)用程序的文件應(yīng)用統(tǒng)一的 NTFS 權(quán)限。例如,如果您不小心過(guò)度限制了一應(yīng)用程序需要包含的文件的 NTFS 權(quán)限,則用戶(hù)可能無(wú)法查看或運(yùn)行該應(yīng)用程序。為了防止此類(lèi)問(wèn)題,在為您的應(yīng)用程序分配 NTFS 權(quán)限之前應(yīng)仔細(xì)計(jì)劃。<br>
<br>
Web 服務(wù)器權(quán)限<br>
<br>
您可以通過(guò)配置您的 Web 服務(wù)器的權(quán)限來(lái)限制所有用戶(hù)查看、運(yùn)行和操作您的 ASP 頁(yè)的方式。不同于 NTFS 權(quán)限提供的控制特定用戶(hù)對(duì)應(yīng)用程序文件和目錄的訪(fǎng)問(wèn)方式, Web 服務(wù)器權(quán)限應(yīng)用于所有用戶(hù),并且不區(qū)分用戶(hù)帳號(hào)的類(lèi)型。<br>
<br>
對(duì)于要運(yùn)行您的 ASP 應(yīng)用程序的用戶(hù),在設(shè)置 Web 服務(wù)器權(quán)限時(shí),必須遵循下列原則:<br>
<br>
對(duì)包含 .asp 文件的虛擬目錄允許“讀”或“腳本”權(quán)限。 <br>
<br>
對(duì) .asp 文件和其他包含腳本的文件(如 .htm 文件等)所在的虛目錄允許“讀”和“腳本”權(quán)限。 <br>
<br>
對(duì)包含 .asp 文件和其他需要“執(zhí)行”權(quán)限才能運(yùn)行的文件(如 .exe 和 .dll 文件等)的虛目錄允許“讀”和“執(zhí)行”權(quán)限。 <br>
<br>
有關(guān)配置 Web 服務(wù)器權(quán)限的詳細(xì)信息,請(qǐng)參閱 訪(fǎng)問(wèn)控制。<br>
<br>
腳本映射文件<br>
<br>
應(yīng)用程序的腳本映射保證了 Web 服務(wù)器不會(huì)意外地下載 .asp 文件的源代碼。例如,即使您為包含了某個(gè) .asp 文件的目錄設(shè)置了“讀”權(quán)限,只要該 .asp 文件隸屬于某個(gè)腳本映射應(yīng)用程序,那么您的 Web 服務(wù)器就不會(huì)將該文件的源代碼返回給用戶(hù)。<br>
<br>
Cookie 安全性<br>
<br>
ASP 使用 SessionID cookie 跟蹤應(yīng)用程序訪(fǎng)問(wèn)或會(huì)話(huà)期間特定的 Web 瀏覽器的信息。這就是說(shuō),帶有相應(yīng)的 cookie 的 HTTP 請(qǐng)求被認(rèn)為是來(lái)自同一 Web 瀏覽器。Web 服務(wù)器可以使用 SessionID cookies 配置帶有用戶(hù)特定會(huì)話(huà)信息的 ASP 應(yīng)用程序。例如,如果您的應(yīng)用程序是一個(gè)允許用戶(hù)選擇和購(gòu)買(mǎi) CD 唱盤(pán)的聯(lián)機(jī)音樂(lè)商店,就可以用 SessionID 跟蹤用戶(hù)漫游整個(gè)應(yīng)用程序時(shí)的選擇。<br>
<br>
SessionID 能否被黑客猜中?<br>
<br>
為了防止計(jì)算機(jī)黑客猜中 SessionID cookie 并獲得對(duì)合法用戶(hù)的會(huì)話(huà)變量的訪(fǎng)問(wèn),Web 服務(wù)器為每個(gè) SessionID 指派一個(gè)隨機(jī)生成號(hào)碼。每當(dāng)用戶(hù)的 Web 瀏覽器返回一個(gè) SessionID cookie 時(shí),服務(wù)器取出 SessionID 和被賦予的數(shù)字,接著檢查是否與存儲(chǔ)在服務(wù)器上的生成號(hào)碼一致。若兩個(gè)號(hào)碼一致,將允許用戶(hù)訪(fǎng)問(wèn)會(huì)話(huà)變量。這一技術(shù)的有效性在于被賦予的數(shù)字的長(zhǎng)度(64 位),此長(zhǎng)度使計(jì)算機(jī)黑客猜中 SessionID 從而竊取用戶(hù)的活動(dòng)會(huì)話(huà)的可能性幾乎為 0。<br>
<br>
加密重要的 SessionID Cookie<br>
<br>
截獲了用戶(hù) sessionID cookie 的計(jì)算機(jī)黑客可以使用此 cookie 假冒該用戶(hù)。如果 ASP 應(yīng)用程序包含私人信息,信用卡或銀行帳戶(hù)號(hào)碼,擁有竊取的 cookie 的計(jì)算機(jī)黑客就可以在應(yīng)用程序中開(kāi)始一個(gè)活動(dòng)會(huì)話(huà)并獲取這些信息。您可以通過(guò)對(duì)您的 Web 服務(wù)器和用戶(hù)的瀏覽器間的通訊鏈路加密來(lái)防止 SessionID cookie 被截獲。有關(guān)加密的詳細(xì)信息,請(qǐng)參閱 安全性。<br>
<br>
使用身份驗(yàn)證機(jī)制保護(hù)被限制的 ASP 內(nèi)容<br>
<br>
您可以要求每個(gè)試圖訪(fǎng)問(wèn)被限制的 ASP 內(nèi)容的用戶(hù)必須要有有效的 Windows NT 帳號(hào)的用戶(hù)名和密碼。每當(dāng)用戶(hù)試圖訪(fǎng)問(wèn)被限制的內(nèi)容時(shí),Web 服務(wù)器將進(jìn)行身份驗(yàn)證,即確認(rèn)用戶(hù)身份,以檢查用戶(hù)是否擁有有效的 Windows NT 帳號(hào)。<br>
<br>
Web 服務(wù)器支持以下幾種身份驗(yàn)證方式:<br>
<br>
基本身份驗(yàn)證 提示用戶(hù)輸入用戶(hù)名和密碼。 <br>
<br>
Windows NT 請(qǐng)求/響應(yīng)式身份驗(yàn)證 從用戶(hù)的 Web 瀏覽器通過(guò)加密方式獲取用戶(hù)身份信息。 <br>
<br>
然而,Web 服務(wù)器僅當(dāng)禁止匿名訪(fǎng)問(wèn)或 Windows NT 文件系統(tǒng)的權(quán)限限制匿名訪(fǎng)問(wèn)時(shí)才驗(yàn)證用戶(hù)身份。詳細(xì)信息,請(qǐng)參閱 關(guān)于身份驗(yàn)證。<br>
<br>
保護(hù)元數(shù)據(jù)庫(kù)<br>
<br>
訪(fǎng)問(wèn)元數(shù)據(jù)庫(kù)的 ASP 腳本需要 Web 服務(wù)器所運(yùn)行的計(jì)算機(jī)的管理員權(quán)限。在從遠(yuǎn)程計(jì)算機(jī)上運(yùn)行這些腳本時(shí),須經(jīng)已通過(guò)身份驗(yàn)證的連接,如使用 Windows NT 請(qǐng)求/響應(yīng)驗(yàn)證方式進(jìn)行連接。應(yīng)該為管理級(jí) .asp 文件創(chuàng)建一個(gè)服務(wù)器或目錄并將其目錄安全驗(yàn)證方式設(shè)置為 Windows NT 請(qǐng)求/響應(yīng)式身份驗(yàn)證。目前,僅 Microsoft Internet Explorer version 2.0 或更高版本支持 Windows NT 請(qǐng)求/響應(yīng)式身份驗(yàn)證。<br>
<br>
使用 SSL 維護(hù)應(yīng)用程序的安全<br>
<br>
Secure Sockets Layer (SSL) 3.0 協(xié)議作為 Web 服務(wù)器安全特性,提供了一種安全的虛擬透明方式來(lái)建立與用戶(hù)的加密通訊連接。SSL 保證了 Web 內(nèi)容的驗(yàn)證,并能可靠地確認(rèn)訪(fǎng)問(wèn)被限制的 Web 站點(diǎn)的用戶(hù)的身份。<br>
<br>
通過(guò) SSL,您可以要求試圖訪(fǎng)問(wèn)被限制的 ASP 應(yīng)用程序的用戶(hù)與您的服務(wù)器建立一個(gè)加密連接;以防用戶(hù)與應(yīng)用程序間交換的重要信息被截取。詳細(xì)信息,請(qǐng)參閱 加密。 <br>
<br>
維護(hù)包含文件的安全<br>
<br>
如果您從位于沒(méi)有保護(hù)的虛擬根目錄中的 .asp 文件中包含了位于啟用了 SSL 的目錄中的文件,則 SSL 將不被應(yīng)用于被包含文件。因此,為了保證應(yīng)用 SSL,應(yīng)確保包含及被包含的文件都位于啟用了 SSL 的目錄中。<br>
<br>
客戶(hù)資格認(rèn)證<br>
<br>
控制對(duì)您的 ASP 應(yīng)用程序訪(fǎng)問(wèn)的一種十分安全的方法是要求用戶(hù)使用 客戶(hù)資格 登錄。客戶(hù)資格是包含用戶(hù)身份信息的數(shù)字身份證,它的作用與傳統(tǒng)的諸如護(hù)照或駕駛執(zhí)照等身份證明相同。用戶(hù)通常從委托的第三方組織獲得客戶(hù)資格,第三方組織在發(fā)放資格證之前確認(rèn)用戶(hù)的身份信息。(通常,這類(lèi)組織要求姓名、地址、電話(huà)號(hào)碼及所在組織名稱(chēng);此類(lèi)信息的詳細(xì)程度隨給予的身份等級(jí)而異。)<br>
<br>
每當(dāng)用戶(hù)試圖登錄到需要資格驗(yàn)證的應(yīng)用程序時(shí),用戶(hù)的 Web 瀏覽器會(huì)自動(dòng)向服務(wù)器發(fā)送用戶(hù)資格。如果 Web 服務(wù)器的 Secure Sockets Layer (SSL) 資格映射特性配置正確,那么服務(wù)器就可以在許可用戶(hù)對(duì) ASP 應(yīng)用程序訪(fǎng)問(wèn)之前對(duì)其身份進(jìn)行確認(rèn)。<br>
<br>
用于處理資格證明的 ASP 腳本<br>
<br>
作為 ASP 應(yīng)用程序開(kāi)發(fā)人員,您可以編寫(xiě)腳本來(lái)檢查資格是否存在并讀取資格字段。例如,您可以從資格證明中訪(fǎng)問(wèn)用戶(hù)名字段和公司名字段。Active Server Pages 在 Request 對(duì)象的 ClientCertificate 集合中保存資格信息。詳細(xì)信息,請(qǐng)參閱 ASP 內(nèi)建對(duì)象。<br>
<br>
必須將 Web 服務(wù)器配置為接受或需要客戶(hù)資格,然后才能通過(guò) ASP 處理客戶(hù)資格;否則,ClientCertificate 集合將為空。<br>
<br>
----------------------------------------------------------------------<br>
<br>
創(chuàng)建事務(wù)性腳本<br>
<br>
商業(yè)應(yīng)用程序常常需要具有在事務(wù)內(nèi)部運(yùn)行腳本和組件的能力。事務(wù)是一種服務(wù)器操作,即使該操作包括很多步驟(例如,定貨、查看存貨、付帳等),也只能整體返回操作是成功還是失敗。用戶(hù)可以創(chuàng)建在事務(wù)內(nèi)部運(yùn)行的 ASP 腳本,如果腳本的任何一部分失敗,整個(gè)事務(wù)都將會(huì)終止。<br>
<br>
ASP 事務(wù)處理是以 Microsoft? Transaction Server (MTS) 為基礎(chǔ)的。Microsoft? Transaction Server (MTS) 是一個(gè)事務(wù)處理系統(tǒng),用于開(kāi)發(fā)、配置和管理高性能、可分級(jí)的、有魯棒性的企業(yè) Internet 和 Intranet 服務(wù)器應(yīng)用程序。Transaction Server 為開(kāi)發(fā)分布式的,基于組件的應(yīng)用程序提供了一個(gè)應(yīng)用程序設(shè)計(jì)模型。它也為配置和管理這些應(yīng)用程序提供了一個(gè)運(yùn)行環(huán)境。<br>
<br>
創(chuàng)建事務(wù)性腳本的功能內(nèi)置在 Internet Information Server 和 Personal Web Server 中。如果您安裝了 Microsoft Transaction Server,就可以將組件打包,以使組件在事務(wù)內(nèi)部運(yùn)行。有關(guān)組件打包的詳細(xì)信息,請(qǐng)參閱 創(chuàng)建 MTS 包。<br>
<br>
關(guān)于事務(wù)<br>
<br>
事務(wù)是整體成功或失敗的操作。事務(wù)處理用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行可靠地更新。在對(duì)數(shù)據(jù)庫(kù)進(jìn)行許多相關(guān)更改或同時(shí)更新多個(gè)數(shù)據(jù)庫(kù)時(shí),要保證所有更改都被正確執(zhí)行。如果這些更改中的任何一個(gè)失敗,都需要恢復(fù)數(shù)據(jù)庫(kù)表的原始狀態(tài)。<br>
<br>
如果沒(méi)有 MTS,您就需要編寫(xiě)腳本和組件,手工跟蹤請(qǐng)求的更改情況,以便在某些更改失敗時(shí)恢復(fù)數(shù)據(jù)。使用 MTS,您只需簡(jiǎn)單的將您的腳本和組件聲明為“需要事務(wù)”并讓 MTS 處理事務(wù)的一致性。事務(wù)處理只適用于數(shù)據(jù)庫(kù)訪(fǎng)問(wèn);MTS 不能對(duì)文件系統(tǒng)或其他的非事務(wù)性資源的更改進(jìn)行恢復(fù)操作。應(yīng)用程序所訪(fǎng)問(wèn)的數(shù)據(jù)庫(kù)必須為 MTS 所支持。目前,MTS 支持 SQL Server 及任何支持 XA 協(xié)議(由 X/Open 協(xié)會(huì)制定)的服務(wù)器。MTS 將繼續(xù)擴(kuò)展對(duì)其他數(shù)據(jù)庫(kù)的支持。<br>
<br>
事務(wù)不能跨越多個(gè) ASP 頁(yè)。如果一個(gè)事務(wù)需要來(lái)自多個(gè)組件的對(duì)象,則須將使用這些對(duì)象的操作組合在一個(gè) ASP 頁(yè)中。例如,假定有一個(gè)組件用于更新工資單數(shù)據(jù)庫(kù),還有一個(gè)組件用于更新人力資源數(shù)據(jù)庫(kù)中的員工記錄。為了記錄一個(gè)員工的新的工資信息,您需要編寫(xiě)這樣一個(gè)腳本,該腳本在一個(gè)事務(wù)環(huán)境中調(diào)用這兩個(gè)組件,一個(gè)用于更新工資單數(shù)據(jù)庫(kù),另一個(gè)用于更新人力資源數(shù)據(jù)庫(kù)中的員工等級(jí)。<br>
<br>
聲明事務(wù)性腳本<br>
<br>
在將一個(gè)頁(yè)聲明為事務(wù)性時(shí),此頁(yè)中的任何腳本命令和對(duì)象都運(yùn)行在同一個(gè)事務(wù)環(huán)境中。Transaction Server 處理生成事務(wù)的細(xì)節(jié)并決定事務(wù)成功(提交)或失敗(終止)。要將某個(gè)頁(yè)聲明為事務(wù)性,可在頁(yè)首添加 @TRANSACTION 指令:<br>
<br>
<%@ TRANSACTION = value %><br>
<br>
value 參數(shù)可以是下列之一:<br>
<br>
值 意義 <br>
<br>
Requires_New 啟動(dòng)一個(gè)新的事務(wù)。 <br>
<br>
Required 啟動(dòng)一個(gè)新的事務(wù)。 <br>
<br>
Supported 不啟動(dòng)事務(wù)。 <br>
<br>
Not_Supported 不啟動(dòng)事務(wù)。 <br>
<br>
@TRANSACTION 指令必須在一頁(yè)中的第一行,否則將產(chǎn)生錯(cuò)誤。必須將該指令添加到需要在事務(wù)下運(yùn)行的每一頁(yè)中。當(dāng)腳本處理結(jié)束時(shí),當(dāng)前事務(wù)即告結(jié)束。<br>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -