Atitit 修改密码的功能流程设计 attilax总结

1.1. 注意点1

1.2. 设计修改用户密码功能时把用户ID保存在哪里?1

1.3. Ui设计1

1.4. 功能设计源码1

1.5. AgtSrv .java2

1.1. 注意点

Req参数需要根据数据库转义,防止sql注入

要输入原密码验证,防止CSRF注入

会话管理防止uid篡改。。建议uid存放在cookie并且aes加密

后台获取uid cookie使用tokenService方式注入。可以灵活支持session,cookie等模式。

在修改密码的过程中,毫不夸张地说,有超过1成的产品找回密码流程存在「越权修改密码」的逻辑漏洞。

1.2. 设计修改用户密码功能时把用户ID保存在哪里?

建议uid存放在cookie并且aes加密

1.3. Ui设计

file:///C:/BaiduYunDownload/atiPlatf_cms_com_2016-11-02%20周三%2023-49-21.66/WebRoot/chgPwd/chgpwd.htm

大概三个box,一个原来密码,俩个新密码。。

1.4. 功能设计源码

function clickx()

{

try{

var jsbrj=newAtiJsBridge();

var dsl="com.attilax.ioc.Ioc4agent.getBean(com.attilax.agent.AgtSrv.class).resetPwd('@old@','@new@')";

dsl=dsl.replace("@old@",$("#old_password").val());

dsl=dsl.replace("@new@",$("#password").val());

//jsbrj.method="post";

var para={};

para.dsl=dsl;

para.$uid_cukname="null_uid_agentUtype";

jsbrj.exe(para,function(data){

console.log(data);

if(data==1)

alert("修改成功")

if(data==0)

alert("修改失败");

//$("#content").val(data);

});

//mycallJava("submitx",$("#title").val(),$("#content").val(),dropIds);

}catch(e)

{

alert(e);

}

}

1.5. AgtSrv .java

/**

*

*/

package com.attilax.agent;

import java.util.List;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

import com.attilax.collection.list;

import com.attilax.ioc.Ioc4agent;

import com.attilax.ioc.IocFacV3_iocx_iocutil;

import com.attilax.lang.Global;

import com.attilax.net.cookieUtil;

import com.attilax.net.requestImp;

import com.attilax.sql.SqlService;

import com.attilax.token.TokenServiceV2;

import com.attilax.token.TokenServiceV3;

import com.attilax.user.UserService;

import com.csmy.my.center.util.CTUtils;

import com.google.common.collect.Lists;

import com.google.inject.Inject;

/**

* @author attilax 2016年11月2日 下午4:58:08

*/

public class AgtSrv extends UserService {

public static void main(String[] args)   {

System.setProperty( "agent_cfgfile","cfg_game.properties" );

AgtSrv srv=com.attilax.ioc.IocFacV3_iocx_iocutil.getBean("com.attilax.ioc.Ioc4agent",AgtSrv.class);

srv=com.attilax.ioc.Ioc4agent.getBean(com.attilax.agent.AgtSrv.class);

//   null_uid_agentUtype

requestImp ri=new requestImp();

ri.setParam("$utype", "agent");

Global.req.set(ri);

Cookie ck=new Cookie("null_uid_agentUtyp", "200006");

List  li=   Lists.newArrayList ();

li.add(ck);

ri.setcookies(li);

try {

System.out.println(srv.resetPwd("1111", "222222"));

} catch (CantFindUserInTokenSrv e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("--f");

}

@Inject

SqlService sqlSrv;

@Inject

TokenServiceV3 tkSrv;

public Object resetPwd(String oldPwd, String newPwd) throws CantFindUserInTokenSrv {

HttpServletRequest req = Global.req.get();

//HttpSession sess = req.getSession();

String uid =  tkSrv.getuid();

if(uid.equals(""))

throw new CantFindUserInTokenSrv("uid:"+uid);

// Set<String> capts = (Set<String>) sess.getAttribute("captSet");

// if (capts == null)

// throw new RuntimeException("chkex,capt_null,验证码错误capt_null");

// if (!capts.contains(req.getParameter("captcha")))

// throw new RuntimeException("chkex,capt_err,验证码错误");

String sql = "update agent set pwd='$pwd$' where uid='$acc$' and pwd='$old$'";

// String pwd = req.getParameter("password");

sql = sql.replace("$old$", oldPwd);

sql = sql.replace("$pwd$", newPwd);

sql = sql.replace("$acc$", uid);

System.out.println("--resetPwd:" + sql);

return sqlSrv.executeUpdate(sql);

// StringUtil.getAttrFromPro("ct_user_password", null)));

}

}

参考资料

修改密码的表单设计及整体体验 - 站长之家.html

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

Atiend

Atitit 修改密码的功能流程设计 attilax总结的更多相关文章

  1. Atitit.二维码功能的设计实践 attilax 总结

    Atitit.二维码功能的设计实践 attilax 总结 1.1. 二维码要实现的功能1 1.2. 现有二维码功能设计不足的地方(待改进)1 1.3. 二维码组件1 1.4. Java版  zxing ...

  2. Atitit.收银机小票打印功能的设计  java php c#.net版本

    Atitit.收银机小票打印功能的设计  java php c#.net版本 1. 1. 打印方式有4种:1 1.1. 1.1. 一是不经过任何修改,直接调用javascript中的window.pr ...

  3. Atitit.ati dwr的原理and设计 attilax 总结 java php 版本

    Atitit.ati dwr的原理and设计 attilax 总结 java php 版本 1. dwr的优点相对于ajax来说..1 2. DWR工作原理1 3. Dwr的架构2 4. 自定义dwr ...

  4. Liferay 6.2 改造系列之七:关闭使用条款确认、密码提醒、新用户强制修改密码等功能

    关闭使用条款确认: 在/portal-master/portal-impl/src/portal.properties配置文件中,有如下配置: # # Set this to true if all ...

  5. 用java语言写一个简易版本的登录页面,包含用户注册、用户登录、用户注销、修改密码等功能

    package com.Summer_0421.cn; import java.util.Arrays; import java.util.Scanner; /** * @author Summer ...

  6. Sharepoint增加修改密码功能

    Sharepoint中没有自带的修改密码的功能. 如果使用的是AD验证,修改密码,只要修改域帐号的用户名密码就可以了.以下代码可以修改本机密码和域帐号密码. 做法是,添加一个webpart,做一个页面 ...

  7. 为VisualSVN Server增加在线修改用户密码的功能

    原文:为VisualSVN Server增加在线修改用户密码的功能 附件下载:点击下载 VisualSVN Server是一个非常不错的SVN Server程序,方便,直观,用户管理也异常方便. 不过 ...

  8. django用户认证系统——修改密码6

    再此之前我们已经完成了用户登录.注册.注销等功能,接下来让我们继续为用户提供修改密码的功能.该功能 Django 的 auth 应用也已经为我们提供,过程几乎和之前的登录功能完全一样. 编写修改密码模 ...

  9. 【系统设计】WMS系统中 库存、盘点、移库、拆库功能的设计(库内管理)

    最近负责WMS系统 盘点 移库 两个功能模块的功能及数据库设计. 物流仓储系统的搭建,要基于仓库的实际情况,整理内部员工需求,再参考其他WMS系统,经过长时间的讨论和研究,最终转化为产品需求. 这里先 ...

随机推荐

  1. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

  2. spfa判断负环

    会了spfa这么长时间竟然不会判断负环,今天刚回.. [例题]poj3259 题目大意:当农场主 John 在开垦他的农场时,他发现了许多奇怪的昆虫洞.这些昆虫洞是单向的,并且可以把你从入口送到出口, ...

  3. Spring学习笔记 6. 尚硅谷_佟刚_Spring_Bean 之间的关系

    1,继承关系 首先从简单的代码来看,有一个Address类,配置文件有两个bean (1)Address类 package com.zsq; public class Address { privat ...

  4. Spring学习笔记 1. 尚硅谷_佟刚_Spring_HelloWorld

    1,准备工作 (1)安装spring插件 搜索https://spring.io/tools/sts/all就可以下载最新的版本 下载之后不用解压,使用Eclipse进行安装.在菜单栏最右面的Help ...

  5. [SystemC] Setting Up the Environment

    My operating system is Ubuntu 12.04. 0. Checking Your Compilers First thing first, you will need the ...

  6. uva 11806 Cheerleaders

    // uva 11806 Cheerleaders // // 题目大意: // // 给你n * m的矩形格子,要求放k个相同的石子,使得矩形的第一行 // 第一列,最后一行,最后一列都必须有石子. ...

  7. boost的编译

    第1步: 先从官网(www.boost.org)下载最新版的BOOST源码,如图所示 我这里下的是zip的那个第2步:编译源代码(放心.这里是傻瓜式的操作,很容易操作)(1)先把源代码放在E盘,例如 ...

  8. vc6编译apache遇到的问题

    在apache的官网上下载了httpd-2.0.65-win32-src,打算了解一下其中的细节,以给目前做的一个项目提供抄袭性的参考.那是一个vc6的工程.用vc6一编译,apr那个工程报错,说什么 ...

  9. VIM使用(二) 浏览内核源代码

    为了实现类似SourceInsight功能,通过VIM+Ctags+Cscope+Taglist+Source Explore +NERD Tree实现. 一, 安装插件 1)安装Ctags 和Csc ...

  10. ubuntu安装erlang

    照着园子里一篇博文安装erlang,各种错调不出来.最后发现官网有解决方案: https://www.erlang-solutions.com/downloads/download-erlang-ot ...