忘记密码功能流程讨论 @@?

baidu_23677379 2014-12-01 02:29:08
本来不想做的想说有问题,让学生自己打给管理员帮他改成回预设密码 (帐号与密码相同)
后来想想算了做这个也不会多难,由于自己平常都没忘记密码
凭印象中,目前大多忘记密码流程。


输入Email → 寄发乱数密码 → 寄给User → 将乱数密码加密后存回DB
刚刚做玩想到一个问题,以前忘记密码只记得这样做,完全没想到这个
没想到在自己开发这个功能时,想到这个问题
问题就是这样不就会被洗密码 ?

知道你Email的人一直故意去,用你的Email去重设密码,虽然他进不去你信箱,但是可以搞你的密码...
这有什么防疫方式吗 ?

还是各位有什么好建议呢 ?

我看微软的Skype忘记密码流程看起来也是这样,只要你输入一个信箱而已@@
...全文
511 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
加密+防篡改,妥妥的不担心安全问题
  • 打赏
  • 举报
回复
url带签名,带加密,改密码的页面负责解密并从数据持久化的地方(一般来说就是数据库)获取相应信息,判断是否已经改过密码了,判断是否在指定时间范围内,然后可以设置每天最多申请修改多少次密码,每次重置间隔是多长,如果上一次的发送还未修改过,是重发还是新发 好吧。。。。其实就这样了
baidu_23677379 2014-12-01
  • 打赏
  • 举报
回复
引用 14 楼 Z65443344 的回复:
一般都是将url发送到注册邮箱,而不是找回密码的时候随便输入一个邮箱,那也太不安全了
挪挪~  我本來的意思是 輸入Email → 檢核是否有此Email註冊 (有)→ 隨機產生密碼到那個註冊的信箱 (跟他說密碼幫你改成這個了) ↑ 本來只是單存怕說,如果我知道這個人,有用這個信箱註冊過這個網站。一直輸入他的信箱就可以搞亂他的密碼 @@~ 他也會一直收到密碼被改的信
baidu_23677379 2014-12-01
  • 打赏
  • 举报
回复
謝謝兩位高手的建議,我來好好思考要怎麼做 你們的經驗非常的棒 ^^ 非常感謝 !!
qq_19920727 2014-12-01
  • 打赏
  • 举报
回复
多数情况下 输入找回帐号 --- 填写注册安全信息 --- 发送URL到注册邮箱 --- 点击url判断是否过时及有效 --- 重新设置密码
於黾 2014-12-01
  • 打赏
  • 举报
回复
引用 13 楼 sp1234 的回复:
不论是直接发送新密码(此密码并不是真正的最终编码,因为它可能会很快就作废),还是发送 www.text.com ? Prod = lasjkdf823kllkasdjfaa92983asda92394 这样的链接让后让用户去页面上自己操作,其实在安全上没有本质上的区别,都是希望发送一个用户猜不到的“修改密码编码”到注册用的邮箱。后者在用户体验上,以操作麻烦来换得安全感觉。
其实我倒觉得后一种方式操作简单,而且也不会出现分不清到底是字母O还是数字0的情况,或者数不清到底有几个空格什么的 就是不需要知道原来的密码到底是什么,直接改成新密码
於黾 2014-12-01
  • 打赏
  • 举报
回复
一般都是将url发送到注册邮箱,而不是找回密码的时候随便输入一个邮箱,那也太不安全了
  • 打赏
  • 举报
回复
不论是直接发送新密码(此密码并不是真正的最终编码,因为它可能会很快就作废),还是发送 www.text.com ? Prod = lasjkdf823kllkasdjfaa92983asda92394 这样的链接让后让用户去页面上自己操作,其实在安全上没有本质上的区别,都是希望发送一个用户猜不到的“修改密码编码”到注册用的邮箱。后者在用户体验上,以操作麻烦来换得安全感觉。
  • 打赏
  • 举报
回复
微软的Skype忘记密码流程看起来未必就是“只要你输入一个信箱而已@@ ”,它要验证你输入的邮箱是注册用的那一两个之一。
  • 打赏
  • 举报
回复
假设是邮寄“新密码”的方式....... 你应该想到一个设计要求:修改的密码,一段时间(比如说30分钟)不用就过期了。 你也可以想到肯定还有另一个设计要求:给人家寄出修改的密码之后,如果用原来的密码登录,那么新密码立刻就过期了。 满足设计要求,再重新考虑你的顾虑,就会打消不少了。
baidu_23677379 2014-12-01
  • 打赏
  • 举报
回复
引用 8 楼 Z65443344 的回复:
随机数可以用GUID,或者时间戳,尽量不重复
隨機數!! 對耶 挪挪 哈哈 太聰明了~~ Table 紀錄 隨機數 + 帳號
於黾 2014-12-01
  • 打赏
  • 举报
回复
随机数可以用GUID,或者时间戳,尽量不重复
於黾 2014-12-01
  • 打赏
  • 举报
回复
不要用账号作为URL参数 可以用随机数,然后把它存进数据库,访问页面的时候去数据库里匹配 或者先存数据库,然后取出主键,把它拼接到URL里
baidu_23677379 2014-12-01
  • 打赏
  • 举报
回复
引用 4 楼 Z65443344 的回复:
URL都是同一个,但是参数是不一样的 谁申请的找回密码,你把它记录到数据库里,然后把主键当URL参数拼接个URL发送邮箱 这样不论发送100遍还是1000遍,里面只不过是不同的参数,根本没有任何跟密码相关的内容,也不怕会泄密 反正只要邮箱不丢失,别人就获取不到这个URL的信息,你传明文还是密文其实都没什么区别 如果对方连你从服务器发给用户邮箱的数据包都能截获,你就不要考虑安全性了
我的意思是URL都是相同的 www.text.com ? ID = Email对应的帐号 (假设我自己是 www.text.com ? ID = 'ABC') ↑ 我这时候就可以用猜的,看到朋友这个网站的帐号是XYZ, 接着故意用他的Email → 触发忘记密码→接着故意这样 www.text.com? ID = XYZ 就可以连到他的修改密码页面,之后就可以登入他的帐号了 >< ?
於黾 2014-12-01
  • 打赏
  • 举报
回复
所谓"安全的找回密码",一定是建立在服务器本身是安全的,用户邮箱也是安全的,这个基础之上的 如果用户邮箱已经被盗,那么你不论通过什么方式将密码发送到邮箱里,也是会被盗的 如果你的服务器本身数据包就被截获,而且被破解,那么你后台的数据库什么的肯定也保不住了,就不要想从代码上怎么保证安全了
於黾 2014-12-01
  • 打赏
  • 举报
回复
URL都是同一个,但是参数是不一样的 谁申请的找回密码,你把它记录到数据库里,然后把主键当URL参数拼接个URL发送邮箱 这样不论发送100遍还是1000遍,里面只不过是不同的参数,根本没有任何跟密码相关的内容,也不怕会泄密 反正只要邮箱不丢失,别人就获取不到这个URL的信息,你传明文还是密文其实都没什么区别 如果对方连你从服务器发给用户邮箱的数据包都能截获,你就不要考虑安全性了
baidu_23677379 2014-12-01
  • 打赏
  • 举报
回复
所以我要开一个Table 纪录 (帐号、时间) 但是造访修改密码的Url一定都是同一个,也只能用Get送帐号过去 连猜的话有机率,弄到别的人(虽然机率不高)这个要怎么预防呢
於黾 2014-12-01
  • 打赏
  • 举报
回复
当然你发送URL的时候,要URL传参,避免多人同时找回密码的时候登陆到找回密码页面看到的都是一样的页面 更进一步的,可以设置有效期,如果15分钟之内没有打开此页面,也失效
於黾 2014-12-01
  • 打赏
  • 举报
回复
不要把密码发给邮箱 只把找回密码的页面URL发给邮箱,然后记录一下状态到数据库 找回密码的页面看不到密码,但是可以修改密码 修改之后把状态修改一下,再次登陆这个页面,就失效,不能改密码

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧