asp.net - 使用SimpleMembershipProvider时使用盐

标签 asp.net asp.net-mvc-4 membership-provider simplemembership

Possible Duplicate:
WebMatrix WebSecurity PasswordSalt




有没有办法让simpleMembershipProvider使用盐?

当我创建我的mvc4 Web项目并将默认连接设置为sqlexpress,然后注册时,我的用户没有密码salt



我希望它在没有太大麻烦的情况下尽可能地安全。

最佳答案

PasswordSalt列未使用,但是在创建存储在“密码”字段中的哈希密码时会使用盐化。如果查看SimpleMembershipProvider的源代码,则可以看到以下内容:http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/3a669e7112e7#src%2fWebMatrix.WebData%2fSimpleMembershipProvider.cs

检查CreateUserAndAccount方法。它使用Crypto.HashPassword方法:

    /* =======================
     * HASHED PASSWORD FORMATS
     * =======================
     * 
     * Version 0:
     * PBKDF2 with HMAC-SHA1, 128-bit salt, 256-bit subkey, 1000 iterations.
     * (See also: SDL crypto guidelines v5.1, Part III)
     * Format: { 0x00, salt, subkey }
     */

    public static string HashPassword(string password)
    {
        if (password == null)
        {
            throw new ArgumentNullException("password");
        }

        // Produce a version 0 (see comment above) password hash.
        byte[] salt;
        byte[] subkey;
        using (var deriveBytes = new Rfc2898DeriveBytes(password, SaltSize, PBKDF2IterCount))
        {
            salt = deriveBytes.Salt;
            subkey = deriveBytes.GetBytes(PBKDF2SubkeyLength);
        }

        byte[] outputBytes = new byte[1 + SaltSize + PBKDF2SubkeyLength];
        Buffer.BlockCopy(salt, 0, outputBytes, 1, SaltSize);
        Buffer.BlockCopy(subkey, 0, outputBytes, 1 + SaltSize, PBKDF2SubkeyLength);
        return Convert.ToBase64String(outputBytes);
    }


基本上可以解决您的问题,它在没有任何其他麻烦的情况下也非常安全。

关于asp.net - 使用SimpleMembershipProvider时使用盐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12544790/

相关文章:

c# - 尝试在 ASP.NET 页面上显示 Crystal 报表时出错

javascript - 将 javascript 返回值传递给 MVC 4 中的 Controller

c# - 多个成员(member)提供者的 Membership.CreateUser

c# - 将 asp.net 成员资格 web.config 设置移动到数据库这甚至可能吗?

c# - ASP.Net MVC 5 OAuth2 Facebook 声明未保留。为什么?

c# - 尝试以编程方式打开 PowerPoint 时出错

c# - DataReaders,慢速客户端是否会导致连接数超过最大连接数

asp.net-mvc-4 - 如何解决错误 "Attempt by security transparent method ' System.Web.Http.GlobalConfiguration.get_Configuration()

asp.net-mvc - 如何刷新 AJAX 帖子上的 Razor View

.net - 默认成员(member)提供者的 OnValidatingPassword 是否必须在自定义实现中被覆盖?