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

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

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

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

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

接着只要实现其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,您可以此展开调查。
并且,强烈建议您以上述信息登录后,立即改变您的注册邮箱。

转载于:https://www.cnblogs.com/SkyD/archive/2009/05/27/1490538.html

让PasswordRecovery控件使用Email地址找回密码相关推荐

  1. 多比(SVG/VML)图形控件多比(SVG/VML)图形拓扑图控件免费下载地址

    多比图形控件是一款基于Web(VML和SVG技术)的矢量图形控件, 类似于网页上的Visio控件拓扑图软件,是目前国内外最佳的基于web的工作流设计器.工作流流程监视器解决方案. 可广泛应用于包括:电 ...

  2. 转载:Ajax控件视频教程下载地址

    1.ASP.NET AJAX基本原理 电信下载:[url=ftp://Anonymous@203.191.150.171/A008jcft20070123.rar]ftp://Anonymous@20 ...

  3. SmartZoneOCR识别控件免费下载地址

    2019独角兽企业重金招聘Python工程师标准>>> SmartZone™光学字符识别工具包,使开发人员能够进行带状区域光学字符识别,带状区域在表单处理应用程序中经常使用.本产品所 ...

  4. 创建输入控件(input控件、文本框、密码框、单项选择、多项选择、重置与提交按钮的设置)

    创建输入控件 input控件的相关概念 input控件的属性 input控件的类型 文本框的设置 密码框的设置 单项选择的设置 多项选择的设置 重置与提交按钮的设置 综合运用 相关概念选择题及参考答案 ...

  5. EasyUI–常用控件之按钮/搜索框/密码框/文件框/数字框/日期时间选择框

    点此查看全部文字教程.视频教程.源代码 本篇主要介绍跟后台数据绑定相关度不大的简单控件,直接写了一个详细的例子,需要说明的东西都在注释里面. 先看示意图: <%@ page language=& ...

  6. asp.net日历控件My97DatePicker下载地址

    http://www.my97.net/dp/demo 转载于:https://www.cnblogs.com/554006164/archive/2009/04/08/1431676.html

  7. asp.net Login控件基本属性及事件说明

    原文:asp.net Login控件基本属性及事件说明 Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全开发提供块捷途径. Login系列控件包含下列控件: Login 登录控件 ...

  8. vc中IP地址控件的使用

    CIPAddressCtrl类:提供了IP地址控件的功能 CIPAddressCtrl::ClearAddress 清除IP地址控件中的内容.void ClearAddress(); CIPAddre ...

  9. asp.net web 开发登录相关操作的控件LoginName、LoginStatus和LoginView控件使用详解

    http://book.51cto.com/art/200909/154039.htm http://book.51cto.com/art/200909/154041.htm ASP.NET提供了一套 ...

最新文章

  1. RHEL7中防火墙firewalld的配置
  2. python软件在下载库文件_python – 并行下载多个文件的库或工具
  3. 第一行代码第一章——你的第一行Android代码
  4. 双绞线传输距离_光纤传输有哪些特点 光纤传输原理介绍【图文】
  5. 第46条:不要使用 dispatch_get_current_queue
  6. oracle rollup 小计,Oracle Group By 用法之 —— Rollup (小计功能)
  7. css:text-overflow属性
  8. Tomcat 在mac上(Idea)端口冲突解决办法
  9. 基于Mind+的NB-IOT自动获取时间和位置
  10. Pr常见问题,如何找回不小心删除的视频音频
  11. 【优化算法】社会群体优化算法(SGO)【含Matlab源码 1449期】
  12. 面向创意设计人员的CATIA
  13. eps提取高程点在哪里_Eps总结(3)——Eps使用点云生成等高线及高程点
  14. 计算机领域有哪些常见的比赛
  15. ps去水印教程_新手必会的PS去水印方法,绝对简单!
  16. 转:深网 | 中国手机往事:因为雷军、罗永浩们,中国才告别山寨机
  17. android 截取视频部分内容,安卓手机如何剪裁视频 手机视频裁剪多余部分 - 迅捷录屏大师...
  18. R语言 ggplot2包载入时候报错,请大家帮忙看看,谢谢
  19. subprocess.run方法
  20. 信号与线性系统经典分析方法思维导图

热门文章

  1. b+树时间复杂度_深入理解数据库系统之存储存引擎(二叉搜索树)
  2. 重置表单验证 清除表单校验信息
  3. JetBrains PyCharm 2018.2.5 x64永久激活教程
  4. C++知识点31——使用C++标准库(关联容器multimap及其初始化,赋值,查找,添加,删除与迭代器失效)
  5. C++知识点6——数组与指针初步
  6. 记录一下Pycharm习惯的快捷键
  7. python3.8还是3.7_选择 Python3.6 还是 Python 3.7
  8. 回滚master代码_[转]Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)...
  9. bootstraptable 列隐藏_bootstrapTable 隐藏某一列
  10. 4 . 2 存储系统