machineKey 項目 (ASP.NET 設定結構描述)

設定金鑰,用以進行表單驗證 Cookie 資料及檢視狀態資料的加密和解密,並驗證跨處理序 (Out-Of-Process) 工作階段的狀態識別。

configuration 項目 (一般設定結構描述)
  system.web 項目 (ASP.NET 設定結構描述)
    machineKey 項目 (ASP.NET 設定結構描述)

<machineKey 
   validationKey="AutoGenerate|value[,IsolateApps]"
   decryptionKey="AutoGenerate|value[,IsolateApps]"
   validation="[SHA1|MD5|3DES]"
   decryption="[Auto|]"
/>

屬性和項目

下列小節描述屬性、子項目和父項目。

屬性

屬性 描述

decryption

選擇性的 String 屬性。

指定用來解密資料的雜湊演算法類型。

這個屬性可以是下列其中一個可能值。

說明

Auto

指定 ASP.NET 根據組態預設值,決定使用哪種解密演算法。這是預設值。

AES

指定 ASP.NET 使用 AES (Rijndael) 演算法解密資料。AES 是解密資料的預設演算法。

3DES

指定 ASP.NET 使用 TripleDES 演算法解密資料。TripleDES (3DES) 演算法使用 DES 演算法的三個連續反覆運算。

這個屬性是 .NET Framework 2.0 版中新增的屬性。

預設值為 "Auto"

decryptionKey

必要的 String 屬性。

指定用於加密和解密資料的金鑰,或是產生金鑰的程序。當 validation 設定為 TripleDES 欄位時,這個屬性便會用於表單驗證加密和解密,以及檢視狀態加密。

如果您將 IsolateApps 修飾詞加入至此屬性,ASP.NET 就會使用每個應用程式的應用程式 ID,為其產生唯一的加密金鑰。IsolateApps 也是預設值的一部分。

如果您需要支援整個 Web 伺服器網路的組態 (Web 伺服陣列),請手動設定此屬性,以確保一致的組態。

這個屬性可以是下列其中一個可能值。

描述

AutoGenerate

指定 ASP.NET 產生隨機金鑰,並將它儲存在 LSA 中。這個值是預設值。如果您將 IsolateApps 修飾詞加入 decryptionKey 值,ASP.NET 就會使用每個應用程式的應用程式 ID,為每個應用程式產生唯一的加密金鑰。

value

指定手動指派的金鑰。您必須手動地將這個值設定為十六進位字元的字串,以確保整個 Web 伺服陣列都有一致的組態。使用 DES 加密時,這個金鑰的長度應該為 16 個字元,使用三重 DES (3 DES) 加密時,長度則為 48 個字元。如果使用的金鑰比最大長度要短,則應以真正隨機的方式建立金鑰,例如使用 RNGCryptoServiceProvider 類別。ASP.NET 只能在可以使用 128 位元加密的電腦上,使用三重 DES。如果您將 IsolateApps 修飾詞加入 decryptionKey 值,則 ASP.NET 會使用每個應用程式的應用程式 ID,為每個應用程式產生唯一的加密金鑰。

預設值為 "AutoGenerate,IsolateApps"

validation

必要的 MachineKeyValidation 屬性。

指定用來驗證資料的加密類型。

這個屬性可以是下列其中一個可能值。

說明

AES

指定 ASP.NET 使用 AES (Rijndael) 演算法解密資料。AES 是解密資料的預設演算法。

MD5

指定 ASP.NET 使用訊息摘要 5 (MD5) 雜湊演算法。這個演算法和 SHA1 相比可以產生較佳的效能。

SHA1

指定 ASP.NET 使用 SHA1 雜湊演算法。使用這個演算法可增強安全性。

這個值是預設值。

TripleDES

指定 ASP.NET 使用 TripleDES 演算法解密資料。TripleDES 演算法使用 DES 演算法的三個連續反覆運算。

在 .NET Framework 1.0 和 1.1 版中,這個值為 "3DES"

預設值為 "SHA1"

validationKey

必要的 String 屬性。

指定用於驗證加密資料的金鑰。enableViewStateMACtrue 時,會使用 validationKey 建立訊息驗證程式碼 (MAC),以確保檢視狀態沒有遭到修改。validationKey 還會用來產生跨處理序、應用程式特定的工作階段 ID,以確保不同工作階段的工作階段狀態變數是隔離的。

如果您將 IsolateApps 修飾詞加入 ValidationKey 值,則 ASP.NET 會使用每個應用程式的應用程式 ID,為其產生唯一的加密金鑰。IsolateApps 也是預設值的一部分。

如果您需要支援整個 Web 伺服器網路的組態 (Web 伺服陣列),請手動設定 ValidationKey 屬性,以確保一致的組態。

validationKey 屬性可以是下列其中一個可能值。

描述

AutoGenerate

指定 ASP.NET 產生隨機金鑰,並將它儲存在 LSA 中。這個選項是預設值。如果您將 IsolateApps 修飾詞加入 validationKey 值,則 ASP.NET 會使用每個應用程式的應用程式 ID,為每個應用程式產生唯一的加密金鑰。

value

指定手動指派的金鑰。您必須手動地將這個值設定為十六進位字元的字串,以確保整個 Web 伺服陣列都有一致的組態。使用 DES 加密時,這個金鑰的長度應該為 16 個字元,使用三重 DES 加密時,長度為 48 個字元。如果使用的金鑰比最大長度要短,則應以真正隨機的方式建立金鑰,例如使用 CryptographyRNGCryptoServiceProvider 類別。ASP.NET 只能在可以使用 128 位元加密的電腦上,使用三重 DES。如果您將 IsolateApps 修飾詞加入 validationKey 值,則 ASP.NET 會使用每個應用程式的應用程式 ID,為每個應用程式產生唯一的加密金鑰。

預設值為 "AutoGenerate,IsolateApps"

子項目

無。

父項目

項目 描述

configuration

指定 Common Language Runtime 和 .NET Framework 應用程式所使用之每個組態檔中需要的根項目 (Root Element)。

system.web

指定組態檔中 ASP.NET 組態設定的根項目 (Root Element),並包含會設定 ASP.NET Web 應用程式以及控制這些應用程式之行為的組態項目。

備註

machineKey 項目會設定金鑰,用於加密和解密表單驗證 Cookie 資料和檢視狀態資料,以及驗證跨處理序工作階段的狀態識別。

預設組態

下列預設 machineKey 項目不會明確地設定在 Machine.config 檔案或根 Web.config 檔案中。然而,應用程式傳回的是預設組態。

<machineKey 
   validationKey="AutoGenerate,IsolateApps" 
   decryptionKey="AutoGenerate,IsolateApps"    
   validation="SHA1" 
   decryption="Auto" 
/>

在 .NET Framework 1.1 版中,下列預設 machineKey 項目是設定在 Machine.config 檔案中。

<machineKey 
   validationKey="AutoGenerate,IsolateApps" 
   decryptionKey="AutoGenerate,IsolateApps" 
   validation="SHA1"
/>

在 .NET Framework 1.0 版中,下列預設 machineKey 項目是設定在 Machine.config 檔案中。

<machineKey 
   validationKey="AutoGenerate" 
   decryptionKey="AutoGenerate" 
   validation="SHA1"
/>

範例

下列程式碼範例示範如何將 validationKeydecryptionKey 屬性都設定為 AutoGenerateisolateApps 值的指定可為伺服器上的每個應用程式產生唯一金鑰。

<machineKey 
   validationKey="AutoGenerate,IsolateApps" 
   decryptionKey="AutoGenerate,IsolateApps" 
   validation="SHA1"
/>

項目資訊

組態區段處理常式

MachineKeySection

組態成員

MachineKey

可設定的位置

Machine.config

根層次的 Web.config

應用程式層級的 Web.config

需求

Microsoft Internet Information Services (IIS) 5.0、5.1 或 6.0

.NET Framework 1.0、1.1 或 2.0 版

Microsoft Visual Studio 2003 或 Visual Studio 2005

請參閱

工作

逐步解說:使用受保護的組態加密組態資訊
HOW TO:使用位置設定設定特定的目錄
HOW TO:鎖定 ASP.NET 組態設定

參考

system.web 項目 (ASP.NET 設定結構描述)
configuration 項目 (一般設定結構描述)
System.Configuration
System.Web.Configuration
MachineKeySection
MachineKey

概念

設定角色的安全性
保護成員資格的安全
保護設定檔屬性
設定工作階段狀態的安全性
ASP.NET 組態檔階層架構和繼承
保護 ASP.NET 組態
ASP.NET 組態案例

其他資源

一般組態設定 (ASP.NET)
ASP.NET 組態設定
設定 ASP.NET 應用程式
ASP.NET 組態 API