【问题标题】:SHA1 Password returns as cleartext after DB query数据库查询后 SHA1 密码以明文形式返回
【发布时间】:2011-02-05 02:28:33
【问题描述】:

我的 aspnet_Membership 表中有一个 SHA1 密码和 PasswordSalt。 但是,当我从服务器运行查询(Sql 查询)时,读者会发现 该通行证已作为其明文等效项返回。

我想知道我的 web.config 配置是否导致了这种情况?

<membership defaultProvider="CustomMembershipProvider" 
                userIsOnlineTimeWindow="20"
                hashAlgorithmType="SHA1">
      <providers>
        <clear/>
        <add  name="CustomMembershipProvider"
              type="Custom.Utility.CustomMembershipProvider"
              connectionStringName="MembershipDB"
              enablePasswordRetrieval="false"
              enablePasswordReset="true"
              requiresUniqueEmail="false"
              requiresQuestionAndAnswer="false"
              passwordStrengthRegularExpression=""
              minRequiredPasswordLength="1"
              minRequiredNonalphanumericCharacters="0"
              passwordFormat="Hashed"

提前谢谢...

【问题讨论】:

  • 好的,我投了两票。我只是想知道是否有某种 ASP.NET 机制可以根据我的 Web.config 中的设置在检索时对我的数据库中的 SHA1 散列密码进行解码。否则,我无法真正解释为什么我的哈希密码在一些严重愚蠢的查询监督之外以明文形式返回。

标签: sql passwords sha1 salt


【解决方案1】:

您为会员提供者使用了正确的设置(特别是passwordFormat="hashed"),但您也有这行:

type="Custom.Utility.CustomMembershipProvider"

设置passwordFormat="hashed" 只会告诉您使用的会员提供商您希望 对密码进行哈希处理。如果您使用自定义成员资格提供程序,则必须对该提供程序进行编码以支持 passwordFormat 设置。

我 99% 确定您的密码以明文形式存储的原因是因为 CustomMembershipProvider 的程序就是这样做的。

【讨论】:

  • 我 100% 确定密码清晰的原因是因为 CustomMembershipProvider 没有被编程为加密密码。 OP提问的语气表示耳朵后面有点湿气。但他会想办法的。 ;-)
【解决方案2】:

好的,我想出了这个。答案是“是的,web.config 中有一种机制可以自动解密我的 SHA1 密码。注意:

decryption="自动"

<machineKey validationKey="MY Validateion Key"
            decryptionKey="My Decryption Key"
            validation="SHA1" decryption="Auto" />

【讨论】:

  • 错了。 SHA-1 不能“解密”,它是一种单向散列函数。您在machineKey 中看到的 SHA1 与 ViewState 验证相关,用于检测/防止篡改。和会员制度无关。
  • 也许解密只是一个哈希检查。 OP 的配置中有很多自定义内容。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 2020-09-09
  • 2019-01-16
  • 2020-03-16
  • 1970-01-01
  • 2014-08-16
相关资源
最近更新 更多