我正在实现一个使用我的富域模型的自定义MembershipProvider类。我犹豫不决,因为我想确保我正确处理密码。我想在数据库中散列密码,但我似乎无法找到任何我信任在ASP.NET中执行此操作的最佳实践或示例代码。是否可以编写自定义MembershipProvider类,但以某种方式利用基类来处理密码详细信息?
答案 0 :(得分:1)
您最好的选择可能是从SqlMembershipProvider
继承,然后覆盖除EncryptPassword
之外的大多数方法,这些方法将使用默认的ASP.NET行为。
public class CustomMembershipProvider : SqlMembershipProvider
{
}
答案 1 :(得分:0)
不要害怕自己散列密码。只需要注意几件事。
1)使用不受损害的哈希算法(MD5是,sha256 / sha512不是现在)
2)始终记得使用哈希密码存储唯一哈希,以便拥有hash = hashfunction( password + salt)
。这是为了防止有人在数据库被盗时使用预先计算的哈希轻松获取密码。
3)(可选)哈希几次,几百或几千次,并使用您的哈希密码存储圆形计数器。这将进一步减慢任何试图从被盗数据库获取明文密码的人。