Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Passwords 在ASP.net MVC模型中,有没有一种方法可以操作属性设置器中的数据?_Passwords_Asp.net Membership_Password Encryption_Federated Identity - Fatal编程技术网

Passwords 在ASP.net MVC模型中,有没有一种方法可以操作属性设置器中的数据?

Passwords 在ASP.net MVC模型中,有没有一种方法可以操作属性设置器中的数据?,passwords,asp.net-membership,password-encryption,federated-identity,Passwords,Asp.net Membership,Password Encryption,Federated Identity,这篇文章是问我需要什么,但不是很好 基本上我有一个模型“用户” 我希望能够做这样的事情 Public Class User Public Property ID As Integer Public Property NickName As String Public Property EmailAddress As String Public Property Password As String Get Retur

这篇文章是问我需要什么,但不是很好

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

我希望能够做这样的事情

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,它使用联邦身份系统。在我看来,它比会员服务提供商好得多

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

如果您不想使用成员资格提供程序,但要实现密码散列,那么在进入编码之前,您可能需要考虑这个问题。

以下是生成密码哈希的安全方法:

储存密码

  • 使用CSPRNG生成长随机盐
  • 把盐预先加在锅里 密码,并使用标准加密哈希函数(如 就像SHA256一样
  • 在用户数据库中保存salt和hash 记录
  • 验证密码的步骤

  • 从数据库中检索用户的salt和hash
  • 预先准备好盐 使用相同的散列函数对给定密码进行散列
  • 将给定密码的哈希值与 数据库如果它们匹配,则密码是正确的。否则 密码不正确

  • 你为什么不使用内置的成员资格提供者呢?他们对我的情况有点过分了。我已经知道如何使用密码哈希,事实上我正在使用PWDTK库来实现这个目的。。。这个答案表明你显然没有理解我的问题。我要问的是,如何在使用模型getter和setter将给定值存储在数据库中之前,自动对该值进行更改。我以前在使用datarows的ASP.NETWebForms中做过这项工作。。在那个例子中,我只是简单地更改了密码设置器,以便在将新值插入数据行之前应用哈希。。。密码只返回哈希密码。您最好在服务层而不是视图模型上实现此功能。您的视图模型应该是简单的POCO对象,不对此类功能负责。同意。将您的模型/实体保持为POCO。您可以始终在用户注册上使用操作过滤器,该过滤器对用户发布的数据进行任何类型的哈希处理,或者更可取的做法是将其放入服务层,如Darin建议的那样。接受为正确答案。我最终选择了VS2012 MVC4和它附带的简单会员资格提供商(在我得到VS2012之前,我不知道这个存在)。。谢谢你的帮助:)
    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