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

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

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

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

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

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

bb

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

protected void PasswordRecovery1_VerifyingUser(object sender, LoginCancelEventArgs e)

{

    PasswordRecovery1.UserName = Membership.GetUserNameByEmail(PasswordRecovery1.UserName);

}

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

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

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

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

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

 

下载本文的XPS版本:

bb打开 让PasswordRecovery控件使用Email地址找回密码.xps

让PasswordRecovery控件使用Email地址找回密码.xps XPS 文档
356.7 KB

fj.png10474909_200905270800231.jpg

fj.png10474909_200905270800232.gif

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10474909/viewspace-604270/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10474909/viewspace-604270/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值