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 值对其进行哈希处理。 无法检索哈希密码。
Encrypted
密码不被视为安全,因为泄露数据库内容的漏洞也可能公开加密密钥。 这意味着可以解密和公开加密的密码。
该值 PasswordFormat 在 ASP.NET 应用程序的 Web.config 文件的 提供程序 部分中指定。
Encrypted
和 Hashed
密码默认基于配置中的 machineKey 元素中提供的信息进行加密或哈希处理。 请注意,如果为 validation
属性指定 值3DES
,或者如果未指定任何值,则将使用 算法对哈希密码进行SHA1哈希处理。
可以使用hashAlgorithmType
成员资格元素 (ASP.NET 设置架构) 配置元素的 属性定义自定义哈希算法。 如果选择加密,则默认密码加密使用 AES。 可以通过设置 decryption
machineKey 配置元素的 属性来更改加密算法。 如果要加密密码,则必须为 decryptionKey
machineKey 元素中的 属性提供显式值。 使用具有 ASP.NET 成员身份的加密密码时,不支持 属性的decryptionKey
默认值AutoGenerate
。
由于 SHA1 出现冲突问题,Microsoft 建议使用基于 SHA256 或更好的安全模型。