設計驗證碼的目的是為了驗證是機器還是人為,也用於校驗是否本人操作。早前驗證碼有發郵箱,但現在註冊體系壹般以手機號做主體,所以主流還是發手機短信驗證碼。
1. 短驗設計
短驗內容:短信簽名XXXX,#文本,發送場景,短驗編號,危險提示#。如:APP名字1234,支付驗證碼編號15,請勿給他人,謹防受騙。
(1)壹般把短信簽名放在簽名,用於標記該短信是哪個產品發出,如果用戶短時間內操作多個產品的發短驗行為加上發送短驗有延遲問題,短信簽名放在簽名,能讓人壹眼辨認出短驗隸屬方,以防搞錯。當然放後面也是常見做法,區別不大。
(2)短驗長度壹般為4或6個隨機數字。至於為什麽是4/6,是從系統安全性和人瞬間記憶綜合考量,機器遍歷4位驗證碼要10^4次,遍歷6位驗證碼要10^6次,普通機器遍歷耗時起碼幾分鐘。4/6長度對於人的瞬間記憶來講,體驗較好,再長記憶就有點吃力了。
(3)考慮到短驗發送有網絡堵塞等原因,用戶遲遲未收到,會短時間內多次獲取,所以壹般設置驗證碼有效期,在有效期內且短驗未失效時,短驗內容壹致,防止用戶已獲取多次,但收到之前短驗,校驗失敗。如用戶第壹次獲取驗證碼(1234),網絡延遲用戶第二次獲取驗證碼(5678)後收到短驗1234,校驗失敗。壹般做法是第二次短驗仍是1234,那麽即使發送延遲,也能校驗成功。這種做法適用於不需要太嚴謹的場景。
對於壹些獲取壹次就要重新生成短驗的做法,可參考銀行做法,在發送短驗界面和短信內容寫明短驗編號,如下圖。
(4)運營商/合作商及有些敏感時期,對短信文案有要求,壹些文案是不能發送的,所以建議確定短信文案後跟運營商/合作商報備下,之前跟某甲方爸爸合作時就要求在短驗後面加上詐騙提醒。提壹句:短信文本超過70個字(符?)在壹些手機上會分成2條短信發送,文案最好能簡潔至上。
(5)有些不謀好意人會故意頻繁請求獲取短驗,影響正常用戶操作,來敲詐。所以壹般會對同壹IP,同壹手機號等在某段時間做發送次數限制;如限制同壹手機號24h內最多獲取短驗10次,超過次數提示24h後再試;
(6)價格:按照之前公司發送體量,對接的幾家渠道商,通知類短信價格壹般到0.02-0.04元左右,營銷類短信價格在0.03-0.04元,爸爸級別的合作商要收0.1+元。
2.? 交互設計
以註冊驗證碼為例,別的場景大同小異;
壹般註冊頁面的手機號和驗證碼在同壹界面顯示,如下圖1。
註意點:
1. 焦點在手機號和驗證碼輸入框內,自動喚起數字鍵,支持切換鍵盤(題外話:我這種懶人把卡號,手機號等存成常用語,支持切換鍵盤可直接粘貼,不用壹字字輸);
2. 輸入框支持壹鍵刪除;
3. 校驗手機號長度,長度=11位數字時,獲取驗證碼按鈕才點亮;
4. 純數字輸入框,不支持輸入數字外字符;
5. 獲取驗證碼後給予延遲提醒;
6. 在獲取驗證碼請求成功後,將手機號置灰,不可修改;
7. 頁面必填項有空值時,登錄按鈕置灰;
8. 輸入框不要禁用粘貼功能,支持用戶粘貼不用壹個個輸入數字;
9. 輸入框有默認提示文案;(這個特別適用於千奇百怪的密碼要求,有些網站密碼不支持特殊字符,錯誤提示還不寫明原因,可以用默認文案告知設置要求)
10. 若同壹手機號短時間內獲取次數超過閾值,可增加難度,如增加圖文驗證碼,圖文校驗通過後才能獲取短驗;
有時註冊項太多和增加頻繁獲取驗證碼的難度(輸入手機號和獲取短驗是2個頁面,多1個頁面就多個難度但治標不治本)會設計成分頁,如下圖2;
多頁設計也適用輸入項太多的場景,壹來容錯率高防止錯壹項,所有輸入框重填;二來輸入項太多,沒有操作欲望;(如果非要壹頁顯示,希望輸入框失去焦點時能自動入庫,用戶下次進入頁面能回顯)
多頁設計註意點:
1. 輸入正確格式的手機號後,自動獲取驗證碼,無需再讓用戶操作;
2. 驗證碼獲取頁顯示手機號,可方便用戶檢查是否填錯;
3. 若分多頁,告知***有幾頁,當前在第壹頁,如第壹頁, 第二頁 ,第三頁...;
3.? 短驗的發送邏輯
1. 我們直接跟渠道商對接:我們告訴渠道商要給某手機號發短驗,渠道商告訴運營商,運營商發短信到用戶手機,如路徑1;
2. 我們跟合作商對接:我們告訴合作商要給某手機號發短驗,合作商在告訴渠道商-->運營商-->手機,如路徑2;
合作商和“我們的產品”的關系可理解成集團和子公司的關系。壹來集團體量大議價權強,由集團和渠道商合作可談下更低更好的價格/服務;二來若集團有多個子公司要和渠道商合作,每個子公司都要對接流程麻煩,壹般合作是:集團談合作,子公司適用。註:驗證碼的生成規則:我方生成或合作商/渠道商生成,並不是短驗都是自己程序生成的。
4.? 對賬
以路徑1為例,我們告訴渠道商要給10個手機號發短驗,渠道商會立即(同步)反饋我們收到要發10條的要求接收請求成功,10s後(異步)告訴我們他已經通知運營商要發8條短信了,20s後運營商告訴渠道商,渠道商告訴我們5條短信已發送到手機發送短信成功。
所以核對發送數量時要明確核對的是發送請求成功數量,還是發送短信成功數量;
壹般我們說短信發送成功,是指我們告訴合作商/渠道商要發短信成功,並不代表用戶收取驗證碼成功。因為短驗發送路徑較長,每壹步出錯都會導致用戶收不到,並不是收不到短信,就是有bug。
5. 短信死活收不到的原因及解決方案
1. 手機欠費,停機(用戶自行檢查);
2. 被攔截軟件攔截了(在攔截短信裏找);
3. 信號不好(換個信號好點的地方/手機唄);
4. 運營商黑名單(找渠道商或運營商核實後解除黑名單);
5. 手機問題(換個手機試試);
6. 遇見鬼了(找程序員解決);
7. 其他忘了,想起來再加;
6. 腹黑謠言時刻
有時短驗被頻繁獲取,可能是壞壞的渠道商在沖量。
短信成本可高可低,回扣水分很大。