找回密码功能的实现(考虑安全性,加密方面)

最近负责公司的登陆与注册模块,大部分已经实现了,这找回密码功能实现的思路是这样的

1、用户忘记密码,需要找回密码

2、后台通过一系列的加密处理,将通过后台邮件将重置密码的页面发送到该用户的邮箱

3、用户通过邮箱里烦人链接就可以重置密码。

以下是代码

/* ------------------------------------------忘记密码,发送邮件------------------------------------------------- */
	//找回密码发送邮件功能
	@RequestMapping(value="getPwd.action")
	public String getPwd(HttpServletRequest request) throws Exception{

			User model = userDao.check(request.getParameter("name"));

			if(model != null && !model.equals("")){
				//秘钥
				String secretKey = UUID.randomUUID().toString();
				//30分钟后过期
				Timestamp outDate = new Timestamp(System.currentTimeMillis()+30*60*1000);
				//忽略毫秒数
				long date = outDate.getTime()/1000*1000;

				String key = model.getName()+"$"+date+"$"+secretKey;
				String digitalSignature = md5.getMD5ofStr(key); //数字签名

				String emailTitle = "找回密码";
				String path = request.getContextPath();
				String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
				String resetPassHref = basePath+"fupdatePwd.action?sid="+digitalSignature+"&name="+model.getName();
				String emailContent = "请勿回复本邮件,点击下面链接,重置密码<br><a href="+resetPassHref+"&target=‘_BLANK‘>点击我重新设置密码</a>"+
				  "<br/>tips:本邮件超过30分钟,链接将会失效,需要重新申请‘找回密码‘"+key+"\t"+digitalSignature;
				String name = model.getName();
				String to = model.getEmail();
				//发送邮件
				Mail.sendAndCc(to, emailContent);//Mail.java上文已经提到,是用来发送邮件的工具类
				request.setAttribute("message", "提交成功,请注意查看邮箱!");
				return "forward:/getPwd.jsp";

			}else{
				request.setAttribute("error", "查无此用户!");
				return "forward:/getPwd.jsp";
			}

	}

	//跳转到忘记密码,提交用户界面
	@RequestMapping(value="fgetPwd.action")
	public String fGetPwd(){
		return "forward:/getPwd.jsp";
	}

	//跳转到重置密码的页面
	@RequestMapping(value="fupdatePwd.action")
	public String fupdatePwd(HttpServletRequest request) throws Exception{
		String name = request.getParameter("name");
		request.setAttribute("user", userDao.check(name));
		return "forgetPwd";
	}

	//重置密码
	@RequestMapping(value="updatePwd.action")
	public String updatePwd(HttpServletRequest request) throws Exception{
		User user = new User();
		user.setId(Integer.parseInt(request.getParameter("id")));
		String password = request.getParameter("password");
		user.setPassword(md5.getMD5ofStr(password));//MD5也是一个工具类,其作用是对密码进行加密
		userDao.updatePwd(user);
		return "redirect:index.jsp";
	}

找回密码功能的实现(考虑安全性,加密方面)

时间: 2024-12-21 04:02:47

找回密码功能的实现(考虑安全性,加密方面)的相关文章

网站开发之用户重设密码 找回密码功能的实现原理

网站开发之用户重设密码 找回密码功能的实现原理,这个东西基本在现在每个系统中都带有的功能,但是实现的方式也是挺多的,这个是跟数据库没多大关系的方法嘞. 用户流程: 1.用户忘记密码,来到密码重设界面 2.用户输入Email地址,点击重设密码按钮 3.用户收到一封密码重设邮件,里面有重设密码的链接,此链接有过期时间 4.用户点击链接,来到密码重设页面,输入新密码,完成 这个流程并没有什么创新,很多网站都是用这套流程 后端实现方式: 1.当用户输入Email地址后,验证这个Email,如果存在于数据

PHP会员找回密码功能实现实例介绍

设置思路 1.用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码. 2.当用户忘记密码或用户名时,点击登录页面的“找回密码”超链接,打开表单,并输入注册用的E-MAIL邮箱,提交. 3.系统通过该邮箱,从数据库中查找到该用户信息,并更新该用户的密码为一个临时密码(比如:12345678). 4.系统借助Jmail功能把该用户的信息发送到该用户的邮箱中(内容包括:用户名.临时密码.提醒用户及时修改临时密码的提示语). 5.用户用临时密码即可登录. HTML 我们在找回密码的页面上放置

SpringMVC通过邮件找回密码功能的实现

1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url 3.加密能防止伪造攻击,一次url只能验证一次,

简述邮箱找回密码功能

1. 在登录页面给个链接,在找回密码界面可以输入邮箱地址和验证码,验证码是为了防止恶意找回: 2. 后台,首先判断验证码是否正确,再判断该邮箱是否注册过用户; 3. 如果该邮箱存在,检索出该用户信息; 4. 如果你的密码没有MD5加密的话,可以直接查询出密码,如果MD5加密了,只能重新生成一个密码,并修改该用户: 5. 将新生成的密码发送到用户邮箱里,用JavaMail发送邮件;

C#实现发送邮件找回密码功能

首先我们来分析一下思路: 三步走: 1.先要发送邮件 2.让用户点击邮件里的URL 3.实现修改密码 1.为了保证安全性,需要生成发送到邮件的URL,主要参数(用户名,过期时间,key(key 需要在每次运行是自动生成随机码), IP等等)   然后将URL发送到邮箱. 2.保存发送的参数(建议保存在数据库) 3.解析url:首先根据用户名从数据库中查找出密钥key和过期时间,没有则表示该请求 是伪造的或者过期的,然后验证签名,验证过期时间,都验证通过,就可以修改密码, 密码修改完以后,删除数据

用户找回密码功能JS验证邮箱通过点击下一步隐藏邮箱输入框并修改下一步按钮的ID

//这里是BaseDao 1 /** 2 * 获得一个对象 3 * @param hql 4 * @param param 5 * @return 6 */ 7 public Object get(String hql, Object[] param){ 8 List<Object> objects = this.getHibernateTemplate().find(hql, param); 9 if (objects != null && objects.size() &g

[阮一峰]找回密码的功能设计

找回密码的功能设计 哈希存储加盐 是加上类似于用户名作为盐吗? 作者: 阮一峰 日期: 2019年2月 7日 所有需要登录的网站,都会提供"找回密码"的功能,防止用户忘记密码. 正确设计这个功能,保证安全可靠,并不简单.下面就是安全专家 Troy Hunt 给出的设计指南. 一.如何保存密码 一个网站要想保证密码安全,第一步就是以正确的方法保存密码.一般说来,密码有三种保存方式. (1)明文保存 "明文保存"就是用户的密码原文不动地写入数据库.这种方式最不安全,极易

Jsp邮件找回密码全攻略

[来源网络  http://www.2cto.com/kf/201502/376374.html] 一般大型网站我们登录的时候,密码忘了都有个功能可以找回密码. 细数下大致的方法: 1.直接把密码发送到你的邮箱去.一般是临时密码. 2.短信验证,成本较高. 3.密保问题 4.发送一个链接到你邮箱点击即可更改密码. 个人认为第四种方法最经济实惠,这次也主要都是在搞这个. 搞了一个晚上,单单邮件发送功能写了快300行,虽然很多是注释和空格,被舍友一说,用python只写了20几行,不禁膜拜PYTHO

Java实现邮箱找回密码

[来源网络:http://www.cnblogs.com/zyw-205520/p/3738439.html] 通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url.