不要把密码发给邮箱
只把找回密码的页面URL发给邮箱,然后记录一下状态到数据库
找回密码的页面看不到密码,但是可以修改密码
修改之后把状态修改一下,再次登陆这个页面,就失效,不能改密码

解决方案 »

  1.   

    当然你发送URL的时候,要URL传参,避免多人同时找回密码的时候登陆到找回密码页面看到的都是一样的页面
    更进一步的,可以设置有效期,如果15分钟之内没有打开此页面,也失效
      

  2.   

    所以我要开一个Table纪录 (帐号、时间)但是造访修改密码的Url一定都是同一个,也只能用Get送帐号过去连猜的话有机率,弄到别的人(虽然机率不高)这个要怎么预防呢
      

  3.   

    URL都是同一个,但是参数是不一样的
    谁申请的找回密码,你把它记录到数据库里,然后把主键当URL参数拼接个URL发送邮箱
    这样不论发送100遍还是1000遍,里面只不过是不同的参数,根本没有任何跟密码相关的内容,也不怕会泄密
    反正只要邮箱不丢失,别人就获取不到这个URL的信息,你传明文还是密文其实都没什么区别如果对方连你从服务器发给用户邮箱的数据包都能截获,你就不要考虑安全性了
      

  4.   


    我的意思是URL都是相同的www.text.com ? ID = Email对应的帐号 (假设我自己是 www.text.com ? ID = 'ABC')

    我这时候就可以用猜的,看到朋友这个网站的帐号是XYZ,
    接着故意用他的Email → 触发忘记密码→接着故意这样 www.text.com? ID = XYZ
    就可以连到他的修改密码页面,之后就可以登入他的帐号了 >< ?
      

  5.   

    不要用账号作为URL参数
    可以用随机数,然后把它存进数据库,访问页面的时候去数据库里匹配
    或者先存数据库,然后取出主键,把它拼接到URL里
      

  6.   

    随机数可以用GUID,或者时间戳,尽量不重复
      

  7.   


    隨機數!! 對耶 挪挪 哈哈 太聰明了~~Table 紀錄 隨機數 + 帳號 
      

  8.   

    微软的Skype忘记密码流程看起来未必就是“只要你输入一个信箱而已@@ ”,它要验证你输入的邮箱是注册用的那一两个之一。
      

  9.   

    不论是直接发送新密码(此密码并不是真正的最终编码,因为它可能会很快就作废),还是发送 
    www.text.com ? Prod = lasjkdf823kllkasdjfaa92983asda92394  这样的链接让后让用户去页面上自己操作,其实在安全上没有本质上的区别,都是希望发送一个用户猜不到的“修改密码编码”到注册用的邮箱。后者在用户体验上,以操作麻烦来换得安全感觉。
      

  10.   

    一般都是将url发送到注册邮箱,而不是找回密码的时候随便输入一个邮箱,那也太不安全了
      

  11.   

    多数情况下  输入找回帐号 ---  填写注册安全信息  --- 发送URL到注册邮箱  ---  点击url判断是否过时及有效  ---  重新设置密码
      

  12.   


    挪挪~ 
    我本來的意思是輸入Email → 檢核是否有此Email註冊 (有)→ 隨機產生密碼到那個註冊的信箱 (跟他說密碼幫你改成這個了)↑
    本來只是單存怕說,如果我知道這個人,有用這個信箱註冊過這個網站。一直輸入他的信箱就可以搞亂他的密碼 @@~
    他也會一直收到密碼被改的信
      

  13.   

    url带签名,带加密,改密码的页面负责解密并从数据持久化的地方(一般来说就是数据库)获取相应信息,判断是否已经改过密码了,判断是否在指定时间范围内,然后可以设置每天最多申请修改多少次密码,每次重置间隔是多长,如果上一次的发送还未修改过,是重发还是新发好吧。其实就这样了