你是否有認真設計過找回密碼的流程?
如果你的產品中設計了賬號+密碼登錄的體系,用戶難免會忘記登錄密碼,所以你的產品流程里就難免會有「找回密碼」的分支。
找回密碼功能對產品經理的邏輯思維是一個不小的考驗。
(一)
首先,用戶在找回密碼時,心情是略帶急躁、不平穩的。這時候要避免大量的輸入,特別是需要大量調取記憶內容的輸入項。
所以,找回密碼設計的核心之一是:找出賬號和密碼之間最核心的關聯關系,給用戶最簡化的流程。
如果你的賬戶體系是單賬號登錄體系(如只使用手機賬號作為登錄賬號),除了要有使用短信找回密碼的入口,還需要有申訴入口(人工處理)。比如,手機換號就是挺蛋疼的事情。
流程1:登錄困難->忘記密碼,找回->輸入手機號->獲取驗證碼->輸入新密碼。
流程2:登錄困難->手機號不能用->人工申訴->驗證賬號所有權->人工修改登錄賬號與密碼。
此時,申訴的入口挺重要的。
如果你的賬戶體系是多賬號體系(如可使用賬號、手機號、郵箱登錄),在找回密碼時,可以選擇通過什么渠道找回密碼,流程分解同上。
當可登錄賬號數等于2,如果是 賬號+手機或賬號+郵箱,跟單賬號登錄體系無多大差別,這時候申訴入口顯得同樣重要;如果是手機+郵箱,則兩個登錄賬號同時無法使用的概率較小,申訴的入口則顯得不那么重要。
(二)
無論流程怎么設計,找回密碼里最重要的一環是驗證賬號相關性和賬號密碼找回憑據有效性。
什么是賬號相關性?
比如登錄賬號是testxss,關聯的手機登錄賬號是15017592905,則testxss和15017592905 具有相關性,修改testxss 時不能輸入別的手機號。
什么賬號密碼找回憑據有效性?
比如15017592905手機驗證碼為3214,輸入驗證碼時一定要檢查3214與手機號15017592905 是否關聯,一旦用戶輸入的驗證碼和手機具有關聯關系,生成修改密碼的有效憑據,憑借此憑據修改對應的賬號的密碼。
在修改密碼的過程中,毫不夸張地說,有超過1成的產品找回密碼流程存在「越權修改密碼」的邏輯漏洞。
比如下面的找回密碼流程:
步驟1:輸入手機號
步驟2:獲取手機號驗證碼
步驟3:驗證手機號和驗證碼是否吻合,如果吻合,進行步驟4;如果不吻合,進行步驟1或2;
步驟4:輸入新密碼
步驟5:提交修改(此時提交的參數有手機號、新密碼)
流程乍一看,沒什么問題,但是黑客只需要在步驟5上抓包,把手機號修改一下,就可以成功修改任意手機號的密碼,所以就有了重置任意用戶密碼的漏洞。
所以,在步驟5,必須有找回密碼的憑證(可以連同驗證碼一起提交,在步驟5才驗證手機號和驗證碼是否吻合;或者在步驟3生成唯一憑證,該憑證與手機號有關聯),證明本次修改密碼的賬號與前面輸入手機號賬號是一致的。
(三)
最后,個人挺討厭在手機端找回密碼時需要輸入兩回密碼的(一次是新密碼,一次是驗證新密碼);也有人說兩次是強化記憶,但仍覺得沒有輸入兩次密碼的必要:
- 大部分人用的多是重復密碼
- 復雜密碼需要重復切換手機鍵盤,容易誤打,體驗糟糕。
- 強化密碼可以通過「可視密碼開關」來讓用戶進行二次確認,比如長按某個icon,可以顯示密碼,松開則隱藏。
再強調下,修改密碼最重要的是邏輯健壯,避免越權修改漏洞。
#專欄作家#
歪,微信公眾號:程序員和產品經理。人人都是產品經理專欄作家,關注移動醫療,移動網頁、APP設計。
本文原創發布于人人都是產品經理,未經許可,不得轉載。
設置新密碼的時候如果改成只輸入一次密碼的話,誤操作打錯了一個字母,那么下次輸入的時候就不可能把密碼打對了
想請教一下,黑客具體怎么抓包?怎么做才能防范呢?
“或者在步驟3生成唯一憑證,該憑證與手機號有關聯”,步驟3驗證碼不就是憑證嗎?文中不是說這種存在邏輯漏洞,為什么結論又說生成唯一憑證就可以?
目前市場上各種軟件,各種賬號太多,容易記混,要是人體特征登錄技術成熟的話,就省去了太多的麻煩了
? 我覺得沒必要輸入兩次密碼,輸入錯誤=忘記=找回
提交修改黑客抓包這塊,你說的應該是驗證碼已經驗證通過了 到下一步輸入密碼,再提交的情況會出現。
現在部分app、web找回密碼都在一個頁面完成,手機號 – 驗證碼 – 密碼 – 提交,這種情況下是點擊提交會驗證手機號和驗證碼是否吻合,應該不會出現抓包的情況。
那么直接輸入密碼為明文密碼,是否可以?
明文 給用戶的感覺不是很好 用戶習慣輸入密碼都是* 突然顯示出來用戶會有疑問 像APP這種 正常用戶登錄后很少會出現退出再登錄的情況,短期也不會出現要找回密碼的情況
像現在有的app都是短息快捷登錄 我覺得也不錯 比如探探 ??
我覺得輸兩次密碼還是有必要的……
我覺得黑客抓包這種安全機制也應該是開發人員需要考慮的,不過有些制度不健全的公司,真的是所有的問題,都是產品經理的問題,都是產品經理要想到的問題,無語。。。
有句話叫做,產品經理要對所有結果負責。這話不是責備的意思,而是希望pm能主動想到一些問題,或者說更是一種心態。有了這種心態,別人再怎么黑也不會怕,因為我已經自我反思過了 ??
黑客抓包不是開發人員應該考慮的嗎