创建新密码的最佳方式是什么



我已经构建了mvc 3应用程序,试图在其中构建忘记密码功能。过程如下。

  • 首先,用户将被提示输入用户名

  • 如果用户名存在,则显示安全问题

  • 如果用户输入正确答案,则新创建的密码将为发送到在注册

在这里,我已经完成了第二步,也完成了检查答案。我想知道的是,创建将发送到电子邮件的新密码的最佳方法是什么。我搜索过创建随机字符串,发现了这个。。

var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var random = new Random();
var result = new string(
    Enumerable.Repeat(chars, 8)
              .Select(s => s[random.Next(s.Length)])
              .ToArray());

我认为,但不确定是否有机会再次创建相同的随机字符串,所以可能不适合新密码。生成新密码的最佳方式是什么。如有任何帮助,我们将不胜感激。非常感谢。

除了@Odded提供的链接外:考虑到最好使用在内存中保存密码字符串时使用SecureString类。

表示应保密的文本。文本为使用时进行加密以保护隐私,并从计算机中删除不再需要时的内存。无法继承此类。

因为一些恶意软件可能会在身份验证时转储您的进程内存,在简单的string的情况下,黑客可以访问clear字符串。

我会使用Guid.New()。但据说最好发送链接来设置新密码

使用Membership.GeneratePassword方法。您可以在这里找到文档。这是一种更安全的机制,因为他们会在背后使用密码学,而且你有一些很好的灵活性,因为它允许你确定要包含的字母数字字符的长度和数量。它会生成一些strong密码,我已经用过了。

对于忘记密码,请使用以下内容:

string username = member.LogName;
                    MembershipUser user = Membership.GetUser(username);
                    string generatedPassword = user.ResetPassword();
                    mail(generatedPassword ); // create custom function to mail the new 

生成的密码。

最新更新