關于驗證碼的一些想法
驗證碼是一種區分用戶是計算機還是人的公共全自動程序,由卡內基梅隆大學的四位教授提出的。正確鍵入驗證碼,才可以繼續用戶行為,所以驗證碼能夠有效的防止惡意破解密碼、刷票、論壇灌水、刷頁等。驗證碼一般在注冊、登錄、留言回復、綁定、支付等場景下出現。
其表現形態多種多樣大致如圖:
機器產生的驗證碼,應該有以下特點:
- 機器在短時間內可以生成大量不相同的問題
- 人可以在短時間內回答出來
- 機器無法在短時間內回答出
驗證碼的存在有其必要性,但用戶為之付出了很高的使用成本,據統計用戶停留在驗證碼的時間超過5.5秒,大大影響了用戶的對產品的體驗感受。那么我們如何權 衡利弊,在安全和易用性上做取舍呢?生活中接觸到的最普遍的驗證碼,是以字母、阿拉伯數字出現的,我將對這一種進行分析。
一、驗證碼的出現
原則是:非必要的時候盡量不用驗證碼。例如:同一用戶名或同一IP地址3次輸入錯誤的時候,才啟用驗證碼。
二、驗證碼的識別
在“字母/數字”驗證碼中,主要是防止通過OCR軟件識別那些容易辨認的驗證碼,同時要提高人眼的辨識度,可以通過顏色,字體,減少干擾等方式。例如:1、L、I、0、O、Q、g、9、2、Z、類似的字母都不應當出現在驗證碼,以降低用戶識別難度。
三、統一輸入類型
最好統一為單一類型識別,如:全部字母,全部數字。建議不要混合輸入,混合輸入的缺點是需要切換輸入區域;還有因沒切換中英文輸入而打出中文的可能。
四、輸入大小寫問題
驗證碼最好采取輸入時不區分字母大小寫,統一識別,并在旁邊提示用戶可不區分大小寫。在驗證碼圖片顯示時,最好統一為小寫或大寫字母,便于識別,輸入框鎖定英文輸入,以免打出漢字。
五、驗證碼的長度
在允許的條件下,驗證碼不要過長,通常我們見到的都是4位的驗證碼。當然也有以英文單詞作為驗證碼,也不失為一個好的辦法。
六、驗證碼刷新問題
當用戶更改驗證碼時,驗證碼應當保證能夠快速刷新,減少用戶駐留時間。一般會默認點擊驗證碼自動刷新,最好能夠提示用戶“如何刷新”,快速引導用戶。
七、驗證碼輸入錯誤時
最好能在用戶輸入時,及時判定驗證碼是否輸入正確,而不要等到用戶點擊提交后,再告訴用戶“您的驗證碼輸入錯誤!”。如果用戶輸入錯誤時,盡量將用戶損失降到最低。盡量降低驗證碼刷新機制,更多的保存用戶已經填過的信息,不要讓用戶反復填寫表單。
將需要填寫驗證碼的信息與非必要驗證信息相分隔也是一個好辦法
八、其他問題
- 網頁緩存:驗證碼輸入框不需要記錄歷史內容;
- 全角/半角問題:輸入法的全角/半角輸入的數字是不一樣的,即全角數字1234和半角數字1234是不同的。一般輸入默認為半角,當用戶輸入全角時提示用戶切換。
最后:驗證碼每天都在重新設計,如果真的有一種完美的驗證碼,早就流行開了,而你沒看到是因為那些方案都比現在的更不靠譜而已。
本文由 @unopm?原創授權發表,并經人人都是產品經理編輯。轉載此文章須經作者同意,并請附上出處(人人都是產品經理)及本頁鏈接。
滑動驗證是個不錯的選擇。
如果覺得滑動驗證的安全性不強的話,那能否將驗證環境換成一個簡單的小游戲呢,比如簡單的連連看小游戲之類的。
有時候驗證碼確實搞得人很煩
劉老師…
不知道老師是否看過:極驗驗證:http://www.geetest.com/ 平均使用時長比其他驗證碼短少2-3秒以上。也符合驗證碼的三個特點,我也是偶然看到的。
體驗過類似滑動驗證的驗證方式,不是太了解滑動驗證的原理,易用性的確很高但安全性不是太清楚;也見過google在web頁面上有自動檢測光標軌跡就能驗證的方式,著實高端,總之在人機博弈過程中一定會有更好的體驗方式出現的 ?? !
??
劉老師??
林老師
驗證碼很影響用戶體驗