設定 ASP.NET 處理序識別
ASP.NET Web 網頁是在處理序或 Windows 程式中執行。所有的 Windows 程式執行時都會搭配特定的安全性識別。根據預設,ASP.NET 處理序會在預先定義的 Windows 識別下執行。此外,您可以藉由設定應用程式使用模擬,將 ASP.NET 設定在不同識別,或提出要求之使用者的 Windows 識別下執行。
為了協助增進 ASP.NET 應用程式的安全性,您應該確認是否有以只擁有執行應用程式所需之最小權限的身分執行 ASP.NET 處理序,這樣萬一發生安全性漏洞,就可以減少 ASP.NET 所公開 (Expose) 的任何資源弱點。
在執行 Microsoft Windows Server 2003 和 Internet Information Services (IIS) 6.0 的 Web 伺服器上,ASP.NET 處理序會在 Web 應用程式的應用程式集區中執行。應用程式集區可定義執行 ASP.NET 的識別 (預設是 NETWORK SERVICE 帳戶)。在舊版的 IIS 上 (在 Microsoft Windows 2000 and Windows XP Professional 作業系統中),ASP.NET 會以 ASP.NET 背景工作處理序 (Aspnet_wp.exe) 執行。執行 ASP.NET 的識別是 Aspnet_wp.exe 處理序的識別 (預設是 ASPNET 帳戶) 所定義。
若要在執行 Windows Server 2003 的伺服器上指定 ASP.NET 應用程式的識別,請使用 IIS 管理員為 ASP.NET 應用程式設定應用程式集區的識別。此外,應用程式集區的識別也必須加到伺服器電腦上的 IIS_WPG 群組。
若要在 Windows 2000 和 Windows XP Professional 下,利用 ASP.NET 本身的帳戶執行 ASP.NET 背景工作處理序,可以將下列兩個屬性套用至 Web 伺服器電腦之 Machine.config 檔的 <processModel> 組態項目:
userName:處理序將在其下執行的 Windows 帳戶名稱。
password:帳戶的明文密碼。將明文密碼儲存在組態檔中是有安全性風險的。如果您將認證存放在組態檔中,就應該使用受保護的組態來加密 <processModel> 組態項目的內容。如需詳細資訊,請參閱使用受保護的組態加密組態資訊。對於在網際網路上發行的應用程式而言,您應該以其他方法執行具有特定識別的應用程式,例如模擬 IIS 提供的匿名識別。如需詳細資訊,請參閱使用 IIS 驗證和 ASP.NET 模擬。
下列範例將示範如何在組態檔的 <processModel> 項目中設定這些屬性,以便在本機使用者帳戶下執行背景工作處理序。
<system.web>
<processModel enable="true"
userName="LOCALMACHINE\IUSR_ProcessUser"
password="%Hco94*#QW12"/>
</system.web>
除了將 userName 屬性設定為現有 Windows 識別名稱以外,您也可以將其設定為預先定義的名稱 System 或 Machine。System 帳戶是在和 IIS 本身 (通常是 SYSTEM) 相同的識別下執行背景工作處理序。
安全性 注意事項 |
---|
不建議您在 System 帳戶下執行應用程式,因為帳戶有更高的權限,所以代表如果 ASP.NET 處理序遭到危害可能會有安全性風險。 |
Machine 帳戶會使用名為 ASPNET 的特殊帳戶 (有限的使用權限) 執行背景工作處理序。不論使用哪一種識別,處理序都不需要對作業系統提供認證。
注意事項 |
---|
為了讓您的 ASP.NET 應用程式正確運作,您必須確定處理序識別具有 ASP.NET 所需的存取控制清單 (ACL) 中所列出之存取控制清單 (ACL) 的存取權。此外,在 IIS 5.0 的伺服器上,處理序識別必須取得 IIS Metabase 的讀取權限,而這項作業可以透過使用 Aspnet_regiis.exe 工具並指定-ga 選項 (例如 |