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

时间:2012-08-20 09:39:43

标签: c# asp.net-mvc-3 forgot-password

我已经构建了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());

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

4 个答案:

答案 0 :(得分:0)

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

  

代表应保密的文字。文字是   在使用时加密以保护隐私,并从计算机中删除   不再需要的记忆。这个类不能被继承。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用Membership.GeneratePassword方法。您可以找到文档here。这是一种更安全的机制,因为它们将在封面下使用加密技术,并且您具有一些很好的灵活性,因为它允许您确定要包含多长时间和多少个字母数字字符。它会生成一些密码,我已经使用过了。

答案 3 :(得分:0)

忘记密码请使用:

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

生成密码。