我正在使用WebMatrix,并建立了一个基于"StarterSite“的网站。在这个入门网站中,你会得到一个很好的基本布局--包括注册、登录、忘记密码页面等。
我注意到在数据库中,"webpages_Membership“表中有一个名为"PasswordSalt”的列。创建几个新用户帐户后,此列始终保留为空。所以我假设没有密码盐(甚至不是默认的)在使用。
显然,这不是最佳实践,但是我似乎找不到任何文档告诉我如何设置或管理密码salt。
如何使用WebSecurity帮助器设置密码salt?
发布于 2012-05-02 23:25:52
上面的答案给人的印象是,在使用WebSecurity SimpleMembershipProvider时没有应用盐。
这不是真的。实际上,没有使用数据库salt字段,但是这并不表示在散列密码时没有生成salt。
在WebSecurity的SimpleMembershipProvider中,使用PBKDF2算法,随机盐由StaticRandomNumberGenerator生成,并与散列一起存储在密码字段中:
byte[] outputBytes = new byte[1 + SALT_SIZE + PBKDF2_SUBKEY_LENGTH];
Buffer.BlockCopy(salt, 0, outputBytes, 1, SALT_SIZE);
Buffer.BlockCopy(subkey, 0, outputBytes, 1 + SALT_SIZE, PBKDF2_SUBKEY_LENGTH);
return Convert.ToBase64String(outputBytes);发布于 2011-02-25 22:29:11
从WebMatrix/ASP.NET网页的RTM版本开始,未使用salt功能/列。
如果您打开Web页面源代码,您将看到db类中到处都是这样的引用
INSERT INTO [" + MembershipTableName + "] (UserId, [Password], PasswordSalt..。
VALUES (uid, hashedPassword,String.Empty /* salt column is unused */为强调而缩写
有明确的方法来覆盖和实现此行为,首先是:
或
使用System.WebData.SimpleMembershipProvider.CreateAccountWithPasswordSalt()扩展
除非你提出要求,否则这里不会详细介绍,因为你对WebMatrix和模板的使用表明你可能不想为这个项目重写大量的C#/ASP代码。
https://stackoverflow.com/questions/5117464
复制相似问题