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

更新:2007 年 11 月

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

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

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

屬性和項目

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

屬性

屬性

描述

decryption

選擇性的 String 屬性。

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

這個屬性可能會具有下列其中一個值。

說明

Auto

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

AES

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

3DES

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

DES

指定 ASP.NET 使用資料加密標準 (DES) 演算法解密資料。

注意事項:

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

decryptionKey

必要的 String 屬性。

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

decryptionKey 值的 IsolateApps 修飾詞表示 ASP.NET 會使用應用程式的 ID 為每個應用程式產生唯一的加密金鑰。IsolateApps 會包含為預設值的一部分。

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

這個屬性可能會具有下列其中一個值。預設值為 AutoGenerate,IsolateApps。

描述

AutoGenerate, IsolateApps

AutoGenerate 修飾詞指定 ASP.NET 產生隨機金鑰,並將它儲存在本機安全性授權 (LSA) 中。IsolateApps 修飾詞指定 ASP.NET 使用每個應用程式的應用程式 ID 為每個應用程式產生唯一的金鑰。其中 None 為預設值。

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

validation

必要的 MachineKeyValidation 屬性。

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

這個屬性可能會具有下列其中一個值。預設值為 SHA1。

說明

AES

指定 ASP.NET 使用 AES (Rijndael) 演算法驗證資料。

MD5

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

SHA1

指定 ASP.NET 使用 SHA1 演算法驗證資料。使用這個演算法可增強安全性。

其中 None 為預設值。

3DES

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

validationKey

必要的 String 屬性。

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

validationKey 值的 IsolateApps 修飾詞表示 ASP.NET 會使用應用程式的 ID 為每個應用程式產生唯一的加密金鑰。IsolateApps 會包含為預設值的一部分。

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

這個屬性可能會具有下列其中一個值。預設值為 "AutoGenerate,IsolateApps"。

描述

AutoGenerate, IsolateApps

AutoGenerate 修飾詞指定 ASP.NET 產生隨機金鑰,並將它儲存在本機安全性授權 (LSA) 中。IsolateApps 修飾詞指定 ASP.NET 使用應用程式的 ID 為每個應用程式產生唯一的金鑰。這是預設值。

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

子項目

無。

父項目

項目

描述

configuration

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

system.web

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

備註

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

<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 版

請參閱

工作

逐步解說:使用受保護的組態加密組態資訊

HOW TO:使用位置設定設定特定的目錄

HOW TO:鎖定 ASP.NET 組態設定

概念

設定角色的安全性

保護成員資格的安全

保護設定檔屬性

設定工作階段狀態的安全性

ASP.NET 組態檔階層架構和繼承

保護 ASP.NET 組態

ASP.NET 組態案例

參考

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

configuration 項目 (一般設定結構描述)

System.Configuration

System.Web.Configuration

MachineKeySection

MachineKey

其他資源

一般組態設定 (ASP.NET)

ASP.NET 組態設定

管理 ASP.NET 網站

ASP.NET 組態 API