問題5:驗證碼是最好的解決方案嗎?
解決了“證明我是人”后,接下來的問題就是“證明我是我”。
在密碼找回場景下,涉及到“證明我是我”的具體情況如下:
- 用戶忘記密碼,目標是盡快登錄 or 修改密碼
- 陌生人試圖修改用戶密碼,目標是將威脅及時告知用戶,并讓陌生人無法輕易修改密碼
- 用戶賬號被盜,密碼已被陌生人修改,目標是盡快讓陌生人無法操作賬戶,并讓用戶有辦法修改密碼
用戶在第一個場景中不需要額外的驗證過程,需要的是盡快登錄和修改密碼。第二個場景中涉及到了權限和通知設計,第三個場景中則需要設計后門。
本質上通知和驗證是一體的,因為用于通知的媒介也是事先經過驗證的。無論權限、后門,還是通知,核心都是對身份的驗證:是我/非我,非常簡明的權限結構(不討論超級管理員)。
對身份進行驗證的一般策略是:線索約定、模式識別。線索約定策略中包括:個人擁有的通信服務、個體特征、第三方證明、公共服務。模式識別策略通常會主動收集當前使用信息與歷史記錄進行比對。
舉幾個線索約定策略的例子:
- 個人通信服務:手機號碼、電子郵箱、設備系統級別推送、私人信件
- 個體特征:指紋、面孔、聲音、虹膜、社會關系、個人經歷
- 第三方證明:信用、工作證明、身份證件、銀行信息、二維碼等
- 公共服務:組織的公開緊急聯系方式
不同的密碼找回場景中,驗證策略的設計原則是:隨著用戶處境的緊急程度逐漸升高,驗證過程中的溝通復雜程度也逐漸變大。
個體特征和第三方證明驗證的使用場景都比較特別,用于安全優先級比較高的場景。由于手機號碼、電子郵箱是當前應用最廣、最貼近生活、使用最方便的通信方式,在密碼找回場景的初期,目前的常用驗證方式是:通過手機號碼和電子郵箱進行驗證。
當手機號碼和電子郵箱無法正常使用,溝通就需要承載更多的信息,這個時候的方案有兩種:通過提供第三方證明和個體特征等復雜程序來驗證身份;通過人工服務與組織進行溝通。
那么就到了巔峰對決的時候了:短信驗證、電話驗證碼、郵箱驗證碼、郵箱鏈接,哪個體驗更優?
手機驗證有三種方式:收到短信驗證碼并填寫、主動發送驗證短信(QQ,iOS 端)、電話語音接聽驗證碼,它們的操作步驟如下:
- 被動收到短信驗證碼:點擊發送驗證碼 - 等待并收到驗證碼 - 查看驗證碼并記憶 - 輸入驗證碼 - 點擊下一步 -
- 主動發送驗證短信:復制短信內容 - 點擊快速發送 - 跳轉到短信界面并粘貼內容 - 發送短信 - 跳轉回App界面 - 點擊我已發送
- 接聽電話驗證碼:點擊發起驗證電話 - 等待并接聽電話 - 等待并記憶驗證碼 - 掛斷電話并輸入驗證碼 - 點擊下一步
無論從操作步驟的多少、還是操作的復雜程度來看,主動發送驗證短信的用戶操作成本顯然要高很多,說明它有具體的使用場景限制,如安全因素優先級比較高的場景。而電話驗證的使用場景有兩個特點:使用習慣、使用環境,如果用戶習慣使用電話進行驗證、或處于不太友好的視覺環境中,那么電話驗證就會多一些優勢。
對于被動收到短信驗證碼,如果用心設計驗證內容文本,結合短信和郵件通知的預覽功能,用戶可以不跳出當前界面來完成驗證任務,這幾乎已經是當前體驗最佳的權限問題解決方案了。
- 除了圖中標明的兩處設計缺陷,對比右側可以發現 Facebook 通知的可讀性更差:與中文閱讀習慣不符;驗證數字和引導詞“驗證碼”的距離比較遠,干擾對驗證碼的閱讀。
- 關于可讀性與個人隱私的權衡,有兩個影響因素:不同產品特點決定用戶收到的是快遞還是保險箱;密碼找回場景下,當前用戶被默認為本人,可讀性的權重要高于個人隱私。
郵箱驗證也有兩種方式:驗證碼、鏈接。它們的操作步驟如下:
- 郵箱驗證碼:點擊發送驗證碼 - 等待并接收郵件通知 - 查看郵件內容并記憶驗證碼 - 跳轉到 App/網頁內 - 輸入驗證碼 - 點擊下一步
- 郵箱鏈接:點擊驗證 - 等待并接受郵件通知 - 查看郵件內容 - 點擊鏈接
從操作步驟來看,鏈接驗證方式要比驗證碼方式步驟更少;但從頁面流程來看,用戶在使用驗證碼方式時頁面環境的變動更小。不過,經過對郵件通知和內容信息的優化后,免于點開郵件查看詳情并跳轉,驗證碼方式的操作步驟已經可以與鏈接方式相當,唯一的區別就是記憶驗證碼和頁面跳轉操作的區別。這時候,記憶驗證碼的方式看起來更優雅一些。
總結一下:
- 短信驗證碼、郵箱驗證碼適用于普通的密碼找回場景
- 主動發送驗證短信適用于安全因素優先級比較高的密碼找回場景
- 接聽驗證電話適用于視覺環境不友好的場景和有相應操作習慣的人群(如老人、海外)