在ASP.net MVC模型中有没有办法操纵属性设置器中的数据?

时间:2013-03-17 13:22:37

标签: passwords asp.net-membership password-encryption federated-identity

这篇文章有点问我需要什么,但不是很好...... How to encrypt password

基本上我有一个模型“用户”

Public Class User

    Public Property ID As Integer

    Public Property NickName As String

    Public Property EmailAddress As String

    Public Property Password As String

End Class

我希望能够做到这样......

Public Class User

    Public Property ID As Integer

    Public Property NickName As String

    Public Property EmailAddress As String

    Public Property Password As String
        Get
            Return Password
        End Get
        Set(value As String)
            Password = DoMyHashing(value)
        End Set
    End Property

End Class

有没有办法简单地做到这一点?

编辑:此后我开始使用使用联合身份系统的BrockAllen.MembershipReboot。在我看来,它比会员提供者要好得多!

1 个答案:

答案 0 :(得分:1)

安全不应该轻微,甚至最好不要重新发明。 简单并不一定意味着安全。因此,您可以使用已为您实现安全性的现有成员资格提供程序,并仅在数据库中存储密码版本的密码。

如果您不想使用成员资格提供程序但是自己实施密码哈希,那么在进入编码之前,您可能会考虑使用good guide

这是一种生成密码哈希的安全方法:

  

存储密码

     
      
  1. 使用CSPRNG生成长的随机盐。
  2.   
  3. 将盐加入盐中   密码并使用标准加密哈希函数对其进行哈希处理   作为SHA256。
  4.   
  5. 将salt和hash都保存在用户的数据库中   记录。
  6.         

    验证密码

         
        
    1. 从数据库中检索用户的salt和hash。
    2.   
    3. 加盐   到给定的密码并使用相同的散列函数散列它。
    4.   
    5. 将给定密码的哈希值与来自的哈希值进行比较   数据库。如果匹配,则密码正确。否则,   密码不正确。
    6.