我已经构建了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());
我认为但不确定是否有可能再次创建相同的随机字符串,因此可能不适合新密码。什么是生成新密码的最佳方式。任何帮助,请将不胜感激。谢谢!
答案 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
生成密码。