2

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

4 回答 4

0

使用Membership.GeneratePassword方法。您可以在此处找到文档。这是一种更安全的机制,因为他们将在幕后使用密码术,并且您具有一些很好的灵活性,因为它允许您确定要包含的字母数字字符的长度和数量。它会生成一些密码,我用过。

于 2012-08-20T09:58:07.640 回答
0

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

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

因为一些恶意软件可以在认证的那一刻转储你的进程内存,在简单的情况下,string黑客 可以访问明文字符串。

于 2012-08-20T09:45:45.277 回答
0

我会使用 Guid.New()。但正如所说,最好发送链接以设置新密码

于 2012-08-20T09:51:54.340 回答
0

对于忘记密码,请使用:

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

生成的密码。

于 2012-08-20T10:28:51.840 回答