SqlMembershipProvider.PasswordFormat 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得可指出在 SQL Server 成員資格資料庫中用來儲存密碼之格式的值。
public:
virtual property System::Web::Security::MembershipPasswordFormat PasswordFormat { System::Web::Security::MembershipPasswordFormat get(); };
public override System.Web.Security.MembershipPasswordFormat PasswordFormat { get; }
member this.PasswordFormat : System.Web.Security.MembershipPasswordFormat
Public Overrides ReadOnly Property PasswordFormat As MembershipPasswordFormat
屬性值
其中一個 MembershipPasswordFormat 值,指出在 SQL Server 資料庫中用來儲存密碼之格式。
範例
下列程式代碼範例顯示 ASP.NET 應用程式 Web.config 檔案區段中 的成員資格 專案 system.web
。 它會指定應用程式的實體, SqlMembershipProvider 並將密碼格式設定為 Hashed
。
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlServices"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
passwordFormat="Hashed"
applicationName="MyApplication" />
</providers>
</membership>
備註
僅使用 Hashed
, Clear
且 Encrypted
不安全。
Hashed
密碼會使用單向哈希演算法和儲存在資料庫中時隨機產生的 Salt 值進行哈希。 驗證密碼時,系統會使用資料庫中的 Salt 值來雜湊密碼以供驗證。 您無法擷取雜湊的密碼。
Encrypted
密碼不會被視為安全,因為洩漏資料庫內容的缺口也可以公開加密密鑰。 這表示您的加密密碼可以解密並公開。
值 PasswordFormat 是在 ASP.NET 應用程式的 Web.config 檔案的 providers 區段中指定。
Encrypted
和 Hashed
密碼預設會根據組態中 machineKey 元素中提供的資訊進行加密或哈希。 請注意,如果您為 validation
屬性指定的值3DES
,或未指定任何值,則會使用SHA1演算法來哈希哈希哈希密碼。
您可以使用成員資格元素的 屬性來定義 hashAlgorithmType
自定義哈希演算法 , (ASP.NET 設定架構) 組態專案。 如果您選擇加密,默認密碼加密會使用 AES。 您可以藉由設定 decryption
machineKey 組態項目的 屬性來變更加密演算法。 如果您要加密密碼,則必須為 decryptionKey
machineKey 元素中的屬性提供明確的值。 使用具有 ASP.NET 成員資格的加密密碼時,不支援屬性的AutoGenerate
decryptionKey
預設值。
由於 SHA1 的衝突問題,Microsoft 建議您使用以 SHA256 或更好的加密方式為基礎的安全性模型。