让PasswordRecovery控件使用Email地址找回密码

简介:

我曾介绍过以Email地址登录基于Membership管理的网站的方法,并指出这是一种更为安全的做法,用户的Email通常不会暴露在网站中,而不知道Email也就无从破解实现登录。

但是在密码找回时,Asp.net提供的PasswordRecovery控件还是要求用户输入用户名以重置密码的,这无疑会使使用了Email地址登录方案的网站的安全系数降低。

并且无论网站是否使用Email地址登录,只要是禁用了安全提问,那么直接在找回密码的地方输入用户名,系统就会自动将用户密码重设为一个新的随机密码,并将其发到注册邮箱,这样极可能被别有用心的人利用,也就是说别人可以轻而易举地随时重置你的密码,让你无法正常登录,必须去自己邮箱里捡回新的密码,这显然是不对的。

那么如何使PasswordRecovery控件支持Email地址索回密码呢?其实非常简单:

首先设置PasswordRecovery控件的一些显示属性,使提示信息引导用户输入Email地址,而非用户名:

clip_image002

接着只要实现其VerifyingUser事件处理函数,进行如下处理即可:

protected void PasswordRecovery1_VerifyingUser(object sender, LoginCancelEventArgs e)

{

    PasswordRecovery1.UserName = Membership.GetUserNameByEmail(PasswordRecovery1.UserName);
    if (PasswordRecovery1.UserName == null || PasswordRecovery1.UserName.Length==0)
   {
       PasswordRecovery1.UserNameInstructionText = "邮箱地址输入有误,或此邮箱地址未经注册。";
       e.Cancel = true;
   }

}

这样只有用户输入了正确的邮件地址,才能进行密码重置,并收取到新密码。

当然为了使控件进行密码重置,你的Web.config得配置好相应的membership节点,并且为了正常发送邮件,也需要配置好其中的mailSettings节点,这就不在本文讨论范围了,如需了解,可参考此书内容:http://book.csdn.net/bookfiles/488/10048816972.shtml

这样做虽然站内的一般用户不会知道别人的Email地址,无法实现恶意重置,但是熟人或者对某用户有一定了解的人还是知道该用户的常用Email地址的(比如可以从某人的博客获得其Email地址),那么这种情况如何避免呢?

我建议应在找回密码的邮件中,向用户提出警示,并在其中显示提交者的IP地址,让其自己来处理:

注意:如果您并未申请密码找回,而意外收到此函,则表示您的帐户安全可能受到威胁。
因为申请密码找回时需要提供您的注册邮箱地址,而在本站内是不会公开您的注册邮箱地址的,所以极有可能是某个知道您邮箱地址的熟人所为。
我们记录的提交此申请的用户IP地址为127.0.0.1,您可以此展开调查。
并且,强烈建议您以上述信息登录后,立即改变您的注册邮箱。


本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/SkyD/archive/2009/05/27/1490538.html,如需转载请自行联系原作者

相关文章
|
6月前
|
C#
C# WinForm发送Email邮件
C# WinForm发送Email邮件
C# WinForm发送Email邮件
|
6月前
|
安全 API 数据安全/隐私保护
email邮箱登录入口,5大邮箱分析
在数字化时代,电子邮件是不可或缺的沟通工具。本文分析了五大主流邮箱:Gmail以其强大搜索和稳定性受欢迎,QQ邮箱因与QQ平台整合深受年轻人喜爱,网易邮箱以专业服务和稳定性赢得用户,Outlook以简洁高效著称,雅虎邮箱则以安全防护见长。此外,AokSend提供高效验证码发送服务。选择合适的邮箱能提升效率,各邮箱特点各异,希望能帮您找到最佳选择。
|
4月前
|
前端开发 PHP 数据格式
​超简单实现联系表单Contact Form自动发送邮件
构建网站联系表单以自动发送邮件的简单方法包括创建HTML表单和PHP处理脚本。HTML表单收集姓名、邮箱、主题和消息,提交至`send_mail.php`。PHP脚本接收数据,使用`mail()`函数发送邮件到指定地址。要确保服务器支持PHP邮件功能,并可能需调整SMTP设置以避免垃圾邮件过滤。可优化点包括使用SMTP服务器、增加表单验证和采用HTML邮件模板。
关于用户 email 邮件地址是否允许有加号的问题
在电子邮件地址中使用加号 (+) 非常有用。Gmail 以及两个常见的邮件服务器系统 sendmail 和 CommuniGate Pro 将发送地址为“user+tag@mumble.dom”的邮件,就好像它的地址是“user@mumble.dom”一样。 然后,电子邮件地址的“+标签”部分可用于归档邮件和筛选邮件。
|
JavaScript
vue里利用multi-items-input组件实现QQ邮箱收件人输入框功能?
vue里利用multi-items-input组件实现QQ邮箱收件人输入框功能?
294 0
vue里利用multi-items-input组件实现QQ邮箱收件人输入框功能?
Email - 搭建自定义邮件服务器
Email - 搭建自定义邮件服务器
304 0
Email - 搭建自定义邮件服务器
|
数据采集 前端开发 JavaScript
如何在网页上隐藏你的Email邮件地址
你有一个网站,你想把email地址放在上面,让别人可以很方便地联系你,但是你又担心一旦公开邮箱地址,垃圾邮件可能会像洪水一样涌来。 你 的担心是对的。现在网上抓取邮件地址的蜘蛛爬虫仅仅通过一条简单的正则表达式,就可以轻易地获取到你的邮件。但是你可能通过一些简单的CSS和 JavaScript来欺骗一些不太聪明的爬虫。(注* 网络爬虫确实已经充斥了互联网,参见:人类只占到互联网流量的40%不到)
676 0
|
JSON C# 数据格式
C# 获取QQ好友列表信息的实现
分析部分 当我们访问QQ空间的时候,大家可以在右侧的发现一个这样的统计信息  当点击这个链接的时候,会跳转到  这样一个URL 这个URl可以管理好友,当然也就能读取到好友  上面我们是在浏览器中的操作,接下来看看数据到底怎么获取的,我们通过Fiddler的查找功能,就可以查找到web请...
1183 0