首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebMatrix WebSecurity PasswordSalt

WebMatrix WebSecurity PasswordSalt
EN

Stack Overflow用户
提问于 2011-02-25 20:53:09
回答 2查看 5.1K关注 0票数 27

我正在使用WebMatrix,并建立了一个基于"StarterSite“的网站。在这个入门网站中,你会得到一个很好的基本布局--包括注册、登录、忘记密码页面等。

我注意到在数据库中,"webpages_Membership“表中有一个名为"PasswordSalt”的列。创建几个新用户帐户后,此列始终保留为空。所以我假设没有密码盐(甚至不是默认的)在使用。

显然,这不是最佳实践,但是我似乎找不到任何文档告诉我如何设置或管理密码salt。

如何使用WebSecurity帮助器设置密码salt?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-02 23:25:52

上面的答案给人的印象是,在使用WebSecurity SimpleMembershipProvider时没有应用盐。

这不是真的。实际上,没有使用数据库salt字段,但是这并不表示在散列密码时没有生成salt

WebSecuritySimpleMembershipProvider中,使用PBKDF2算法,随机盐由StaticRandomNumberGenerator生成,并与散列一起存储在密码字段中:

代码语言:javascript
复制
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);
票数 36
EN

Stack Overflow用户

发布于 2011-02-25 22:29:11

从WebMatrix/ASP.NET网页的RTM版本开始,未使用salt功能/列。

如果您打开Web页面源代码,您将看到db类中到处都是这样的引用

代码语言:javascript
复制
INSERT INTO [" + MembershipTableName + "] (UserId, [Password], PasswordSalt

..。

代码语言:javascript
复制
VALUES (uid, hashedPassword,String.Empty /* salt column is unused */

为强调而缩写

有明确的方法来覆盖和实现此行为,首先是:

  • 覆盖System.WebData.SimpleMembershipProvider.CreateAccount()

使用System.WebData.SimpleMembershipProvider.CreateAccountWithPasswordSalt()扩展

除非你提出要求,否则这里不会详细介绍,因为你对WebMatrix和模板的使用表明你可能不想为这个项目重写大量的C#/ASP代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5117464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档