• paip.找回密码功能流程设计(通过email)


    paip.找回密码功能流程设计(通过email)

    找回口令的功能
    找回口令的功能一定要提供。但是很多朋友并不知道怎么来设计这个功能。我们有很多找回口令的设计,下面我逐个点评一下。

     不要重置用户的密码。因为这有可能让用户的密码遭到恶意攻击。当然,你要发个邮件给用户让其确认,用户点击邮件中的一个链接,你再重置。我并不推荐这样的方法,因为用户一般都会用笔记下来这个很难记的口令,然后登录系统,因为登录系统时使用了“记住密码”的功能,所以导致用户不会去修改密码,从而要么导到被写下来的密码被人盗取,要么又忘记了密码。


    好一点的做法——通过邮件自行重置。当用户申请找回口令功能的时候,系统生成一个MD5唯一的随机字串(可通过UID+IP+timestamp+随机数),放在数据库中,然后设置上时限(比如48小时内),给用户发一个邮件,这个连接中包含那个MD5的字串的链接,用户通过点击那个链接来自己重新设置新的口令。

    此连接单次使用


    伪码设计
    uname=input()
    $md5str=md5(uname+ip+timestamp+ramode+key)
    $unameEncode=3des(uname+key)
    url=http://host:port/app/resetPwd.jsp?sign=$md5str&u=$unameEncode
    $emailtxt= getTemplete(c:\templete.htm)
    $emailtxt= replace(@username,@url)
    sendmail($emailtxt);
    save(uname,$md5str,nowtime)
    log(uname,time,event:findbackpwd)
    /user recepte mail.open mailbox ,click to resetPwd.jsp

    check()
    {
    $uname=un3des( getpara(u));
    $sign=getpara(sign);
     if(NOTexist( $sign,$uname))
     tips (no this href) ;exit;
    if(outtime($sign,$uname))
     tips (only 48 hr avild) ;exit;

    }
    show (uname,textbox:pwd,texbox:pwd2)
    //when submit
    check() 
    $uname=getRec($sign,un3des($unameEncode))
    resetPwd( $uname,$newpwd,$newpwd2);
    deleteSave($sign,$uname) //confirm only signle use


    更好一点的做法——多重认证。比如:通过手机+邮件的
    方式让用户输入验证码。手机+邮件可能还不把握,因为手机要能会丢了,而我的手机可以访问我的邮箱。所以,使用U盾,SecureID(一个会变化的6位数token),或是通过人工的方式核实用户身份。当然,这主要看你的系统的安全级别了。

  • 相关阅读:
    搭建strom 的开发环境
    maven 的plugin 的使用
    Maven 的dependency 的 classifier的作用
    Maven中的dependency的scope作用域详解
    Supervisor-进程监控自动重启
    websocket 实战
    vue 监听路由变化
    vux-uploader 图片上传组件
    vue 定义全局函数
    判断对象属性的值是否空,如为空,删除该属性
  • 原文地址:https://www.cnblogs.com/attilax/p/15199837.html
Copyright © 2020-2023  润新知