ASP.NET 部分信任不保證可成功進行應用程式隔離

文章翻譯 文章翻譯
文章編號: 2698981 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

簡介

ASP.NET 可讓系統管理員在部分信任模式 (例如?中度信任) 中裝載應用程式。ASP.NET 也可讓您透過自訂原則檔設定部分信任層級。如需有關如何在 ASP.NET 2.0 中使用中度信任的詳細資訊,請前往下列 Microsoft Developer Network (MSDN) 網頁:
作法:在 ASP.NET 2.0 中使用中度信任 (英文)
我們先前說明 ASP.NET 部分信任是一個在多個具有不同信任層級的應用程式裝載於同一個網頁伺服器的共用主控環境中,強制執行應用程式隔離的機制。我們將為此更新指引,以反映使用部分信任執行 ASP.NET 網頁架構應用程式並不保證可將應用程式與其他在同台電腦上執行相同處理序的應用程式完全隔離。

建議程序是將 ASP.NET 網頁架構應用程式設定為在其他低權限處理序中執行 (使用單獨的應用程式集區),以確認可將該應用程式與相同網頁伺服器上其他 ASP.NET 網頁架構應用程式隔離。下列章節提供有關如何設定應用程式以進行隔離的詳細資訊。我們將更新其他文件以反映本文列出的原則變更。

其他相關資訊

伺服器管理員應套用本文的方針以確認已在共用主控環境中成功隔離應用程式。這些方針適用於在 Windows Server 2003 SP2 或更新版本中裝載 ASP.NET 時使用。此方針可用於 Internet Information Services (IIS) 6.0 到 7.5。

您可使用 IIS 7 和 7.5的 AppCmd.exe (英文) IIS 命令列工具和 IIS 6.0 的 IIS 系統管理指令碼 (英文) 自動化本文列出的許多工作。

如何在獨立的 IIS 網站中放置應用程式

在共用主控環境中,應用程式應放置於獨立的 IIS 網站。當應用程式裝載於獨立的網站時,較容易在應用程式間隔離設定。此外,NET Framework CLR 主機會分開。這會提供該層級額外的隔離。

若要將各個應用程式放置到獨立的網站,請依照下列步驟執行:

Internet Information Services 6.0 (Windows Server 2003 SP2)

  1. 開啟 Internet Information Services (IIS) 管理員。
  2. 在左邊窗格中,展開目前伺服器的節點。
  3. [網站] 節點上按右鍵,按一下 [新增],然後按一下 [網站]
  4. 按一下 [下一步]
  5. 為新網站輸入唯一名稱,然後按一下 [下一步]
  6. 設定主控環境的網站繫結。
  7. 輸入儲存應用程式檔案的資料夾實體路徑。
  8. 按一下以選取 [執行指令碼 (例如 ASP)] 核取方塊,然後按一下 [下一步]
  9. 按一下 [完成]。新網站便會出現在 [網站] 節點下方。

Internet Information Services 7 (Windows Vista SP2 及 Windows Server 2008 SP1) 和 Internet Information Services 7.5 (Windows 7 及 Windows Server 2008 R2)

  1. 開啟 Internet Information Services (IIS) 管理員。
  2. [連線] 窗格中,展開目前伺服器的節點。
  3. 選取 [網站] 節點,然後按一下 [執行] 窗格中的 [新增網站] 連結。
  4. [新增網站] 對話方塊中,為新網站輸入唯一名稱,然後輸入儲存應用程式檔案的資料夾實體路徑。根據預設,會以網站的名稱建立新的應用程式集區,且系統會將該網站設定為使用此應用程式集區。(此為建議設定)。
  5. 設定主控環境的網站繫結。
  6. 按一下以取消選取 [立即啟動網站] 對話方塊確認在本文的隔離方針完成之前都無法使用網站。
  7. 按一下 [確定]。設定好的網站會出現在 [連線] 窗格中的 [網站] 節點下方。

如何在獨立的 IIS 應用程式集區中放置網站

在共用主控環境中,應用程式應放置於其他 IIS 應用程式集區。這可讓應用程式以唯一的身分識別隔離到其他作業系統處理序。這可在網站間提供某種層級的隔離。(下一節將告訴您如何設定應用程式集區身分識別以進行隔離)。

Internet Information Services 6.0 (Windows Server 2003 SP2)

  1. 開啟 Internet Information Services (IIS) 管理員。
  2. 在左邊窗格中,展開目前伺服器的節點。
  3. [應用程式集區] 上按右鍵,按一下 [新增],然後按一下 [應用程式集區]
  4. 為新應用程式輸入唯一名稱,然後按一下 [確定]
  5. 展開 [網站] 節點。
  6. 在目標網站上按右鍵,然後按一下 [內容]
  7. 按一下 [主目錄] 索引標籤。
  8. 在對話方塊底部的 [應用程式集區] 欄位中,選取新的應用程式集區。
  9. 按一下 [確定]

Internet Information Services 7 (Windows Vista SP2 及 Windows Server 2008 SP1) 和 Internet Information Services 7.5 (Windows 7 及 Windows Server 2008 R2)

您依照<如何在獨立的 IIS 網站中放置應用程式>一節的步驟執行後,新的網站便會自動放置到新的、獨立的應用程式集區中。但是,若您必須將現有的網站設定為使用新的、獨立的應用程式集區,請依照下列步驟執行:
  1. 開啟 Internet Information Services (IIS) 管理員。
  2. [連線] 窗格中,展開目前伺服器的節點。
  3. 選取 [應用程式集區] 節點。
  4. [執行] 窗格中,按一下 [新增應用程式集區] 連結。
  5. 為新應用程式輸入唯一名稱,然後選取目標 .NET Framework 版本和管線模式。
  6. 按一下 [確定]。新的應用程式集區會顯示在清單中。
  7. [連線] 窗格中,展開 [網站]節點。
  8. 選取您想要移動到先前在此程序中建立的應用程式集區的網站。
  9. [執行] 窗格中,按一下 [基本設定] 連結。
  10. [編輯網站] 對話方塊中,按一下 [選取]
  11. [應用程式集區] 清單中,選取您先前建立的應用程式集區。
  12. 按一下 [確定]
[編輯網站] 對話方塊中,按一下 [確定]

如何設定應用程式集區以進行隔離 (處理序身分識別)

應用程式集區會裝載一或多個 Windows 處理序中的應用程式和網站。處理序執行下的身分識別是可以設定的。在共用主控環境中,每個應用程式都應該有獨立的身分識別。這可確保每個應用程式都可在唯一帳戶的內容中執行。使用檔案系統判別存取控制清單 (DACL) 和基礎作業系統的內建處理序隔離功能,可正確地隔離。若要建立使用者帳戶並指派應用程式集區使用該帳戶,請依照下列步驟執行。

Internet Information Services 6.0 (Windows Server 2003 SP2)

建立本機使用者帳戶作為應用程式集區身分識別使用
  1. 開啟 Internet Information Services (IIS) 管理員。
  2. 在左邊窗格中,展開 [本機使用者和群組]
  3. [使用者] 上按右鍵,然後按一下 [新增使用者]
  4. 為新的使用者帳戶輸入唯一名稱及強式密碼。
  5. 按一下以取消選取 [使用者下次登入時須變更密碼] 核取方塊。
  6. 按一下以選取 [使用者不得變更密碼] 核取方塊。
  7. 按一下 [建立],然後按一下 [關閉]
  8. 在左邊窗格中,選取 [使用者] 節點。新的帳戶會出現在清單中。
設定應用程式集區以使用新的本機使用者帳戶
  1. 開啟 Internet Information Services (IIS) 管理員。
  2. 在左邊窗格中,展開目前伺服器的節點。
  3. 展開 [應用程式集區] 節點。
  4. 在目標應用程式集區上按右鍵,然後按一下 [內容]
  5. 按一下 [身分識別] 索引標籤。
  6. 選取 [設定為] 選項按鈕。
  7. 為新帳戶輸入使用者名稱和密碼。
  8. 按一下 [確定]
  9. [確認密碼] 對話方塊中重新輸入密碼,然後按一下 [確定]

Internet Information Services 7 和 7.5 (Windows Vista SP2、Windows Server 2008 SP1、Windows 7 和 Windows Server 2008 R2)

  1. 開啟 Internet Information Services (IIS) 管理員。
  2. [連線] 窗格中,展開目前伺服器的節點。
  3. 選取 [應用程式集區] 節點。
  4. 選取目標應用程式集區。
  5. [執行] 窗格中,按一下 [進階設定] 連結。
  6. [處理序模型] 區段中,將 [身分識別] 內容設定為 [ApplicationPoolIdentity]。這項設定會自動建立此應用程式集區的唯一身分識別。在下列章節中,您可以使用此唯一身分識別在應用程式需存取的檔案位置上設定判別存取控制清單 (DACL)。
  7. 按一下 [確定]

如何在應用程式內容位置上設定 DACL

判別存取控制清單 (DACL) 是內含某物件的相關權限的清單,可用來控制該物件的存取權限。使用 DACL 限制應用程式內容的存取權有助於加強裝載於相同網頁伺服器上的網站間的隔離。如需有關 ACL 和 IIS 身分識別的詳細資訊,請參閱透過檔案系統 ACL 保護 IIS 內容的安全 (英文)

IIS 的所有版本

  1. 開啟命令提示字元或 Windows 檔案總管中的網站內容根資料夾。
  2. 使用下列其中一個方法來移除此位置的任何非系統管理員存取權的項目。(包括使用者群組)。
    • 在 Windows 檔案總管中,在資料夾上按右鍵,選取 [內容],按一下 [安全性] 索引標籤, 然後變更存取控制清單。
    • 在命令提示字元中,使用 icacls.exe (英文) 公用程式 (或較舊的 Windows 作業系統版本上的 cacls.exe) 來變更存取控制清單。
  3. 新增您為網站選取的處理序身分識別新項目。
  4. 為資料夾提供新的身分識別讀取和執行存取權。
如果有需要應用程式來寫入權限的特定資料夾 (例如 [上傳] 資料夾),請依照下列步驟執行:

Internet Information Services 6.0 (Windows Server 2003 SP2)

  1. 在 Windows 檔案總管中,在資料夾上按右鍵,選取 [內容],按一下 [安全性] 索引標籤,再為處理序身分識別新增 [修改] 存取權。
  2. 如果是內含靜態內容 (圖片、文字檔等) 的資料夾,請依照下列步驟執行:
    1. 開啟 Internet Information Services (IIS) 管理員。
    2. 在左邊窗格中,在適當的資料夾名稱上按右鍵,然後按一下[內容]
    3. 按一下 [目錄] 索引標籤。
    4. [執行權限] 清單中,選取 [無]

Internet Information Services 7 和 7.5 (Windows Vista SP2、Windows Server 2008 SP1、Windows 7 和 Windows Server 2008 R2)

  1. 在 Windows 檔案總管中,在資料夾上按右鍵,選取 [內容],按一下 [安全性] 索引標籤,再為處理序身分識別新增 [修改] 存取權。
  2. 如果是內含靜態內容 (圖片、文字檔等) 的資料夾,請為在 accessPolicy 設定中不允許指令碼權限的位置新增「web.config」檔案項目:
    <system.webServer> <handlers accessPolicy="Read,Write" /> </system.webServer>

如何設定 Temporary ASP.NET Files 資料夾的位置以及在每個網站中設定 DACL

ASP.NET 需要用伺服器上的位置來儲存暫存資料 (例如編譯檔案)。這通常是 Temporary ASP.NET Files 資料夾。根據預設,此資料夾是位在安裝 .NET Framework 的資料夾中。為每個網站配置不同的暫存位置及適當地保護每個資料夾的安全,有助於加強裝載於同個網頁伺服器上的網站間的隔離。如需有關 Temporary ASP.NET Files 資料夾的詳細資訊, 請參閱 瞭解 ASP.NET 動態編譯 (英文)。

如何為每個網站設定不同的 Temporary ASP.NET Files 資料夾位置

  1. 為每個網站建立新的資料夾,來儲存該網站的暫存 ASP.NET 檔案。最好是使用非系統的磁碟機來儲存暫存檔案。
  2. 使用<位置>元素將可指向該特定網站的新資料夾位置的設定納入伺服器的根 web.config 或 applicationHost.config 檔案,例如下列元素:
    <configuration> <location path="path"> <system.web> <compilation tempDirectory="temp-files-path" /> </system.web> </location> <!-- and so on --> </configuration>

如何在 Temporary ASP.NET Files 資料夾位置上設定適當的 DACL

  1. 使用命令提示字元或 Windows 檔案總管來移除此位置的任何非系統管理員存取權限。(包括使用者群組)。
  2. 將新項目新增您先前為此網站選取的處理序身分識別,然後授予該資料夾此身分識別 [修改] 存取權限。

如何從根設定檔移除秘密設定資料

應用程式 web.config 檔案是位於供給該應用程式的內容資料夾。即使 ASP.NET 不會處理應用程式 web.config 檔案,當可行時,最好在應用程式位置外的設定檔中放置安全性秘密資訊 (例如電腦金鑰設定和連接字串)。這可加強防禦以免資訊洩露。

Internet Information Services 6.0 (Windows Server 2003 SP2)

在根 web.config 檔案中儲存安全性秘密設定資訊,非隔離不同網站間資料的好方法,因為所有網站都有此檔案的讀取存取權。因此在 IIS 6 中,您應該在應用程式的 web.config 檔案中儲存秘密設定。這可隔離站台間的秘密設定。在這種情況下,您的應用程式便需依賴 ASP.NET 防禦以防止應用程式 web.config 檔案遭到使用並確認秘密資訊沒有遭到洩露。

Internet Information Services 7 和 7.5 (Windows Vista SP2、Windows Server 2008 SP1、Windows 7 和 Windows Server 2008 R2)

如果是 IIS 7 及更新版,請將 IIS applicationHost.config 檔案中的敏感設定移到包含網站適用的設定的<位置>元素。如需詳細資訊,請參閱如何在 IIS 7.0 設定中使用鎖定 (英文)。Microsoft 向以下人員 致謝 (英文),感謝他們與我們合作協助保護客戶:
注意 :本文屬於「快速發佈」文章,係由 Microsoft 技術支援或組織內部直接建立。 本文所包含的資訊是為了回應新問題而依現況提供。 因此為了迅速對外發佈,文章內容可能含有印刷錯誤,而且可能會在不另行通知的情況下進行修改。 如需其他考量事項,請參閱使用規定

屬性

文章編號: 2698981 - 上次校閱: 2012年6月7日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 3
關鍵字:?
atdownload kbinfo kbexpertiseinter kbsecurity KB2698981
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com