酷播亮新聞
最棒的知識補給站

驗證碼,引發了我的三點思考

從零開始學運營,10年運營老司機帶路,2天線下集訓+1年在線學習,做個優秀的運營人。 了解詳情

驗證碼這個設計想必所有人都不會陌生,當你登錄或者註冊的時候,我就會經常用到驗證碼。 它們大部分是由一串歪歪扭扭的字符所組成,讓人看起來並不是那麼容易的能識別出來。 這簡單的設計背後究竟隱藏著什麼呢?

驗證碼的英文名稱為“CAPTCHA”,這是只是一個縮寫,全稱是:Completely Automated Public Turing test to tell Computers and Humans Apart。 意思是:用來區分人類和電腦的全自動圖靈測試。 據維基百科的描述,驗證碼出現於十年前,是為了防止機器(程序)假扮成人,去佔用原本為用戶準備的資源。 比如,利用腳本程序不斷地模擬嘗試登錄以便破解賬號密碼,或者利用惡意代碼在 BBS 中發布大量廣告或詐騙內容。

這樣我們就可以看出驗證碼的設計目的是:區分人與機器,在正常的流程中增加一道門檻,人可以通過這道門檻,而機器將被拒之門外。

從上來看,驗證碼起到了以個“防護者”的角色,防止惡意破解密碼、刷票、論壇灌水、刷頁。 這也理所應當是一個很好的設計。 但是,從某種意義上來講的話,未必是一個好設計 。 因為“防護者”的角色這個件事情本應該就是服務提供方應該盡到的責任,而服務方卻將其成本轉移到了用戶的身上,增加了用戶的 操作成本

這件事引發了我的思考:

  1. 驗證碼的演進
  2. 不要將責任轉移給用戶
  3. 方案選擇的平衡

驗證碼演進

目前市場上可見的驗證碼大概如下幾種:

  1. 字符圖片驗證碼
  2. 廣告驗證碼
  3. 問題驗證碼
  4. 物品圖片驗證碼
  5. 短信驗證碼
  6. 短信語音驗證碼

可以看出,驗證碼也在朝著更安全,更便捷的方向發展著。 而隨著技術的發展,現在更是朝著智能化的方向發展。

Google 在兩三年前發布了一個叫作reCAPTCHA 的解決方案,本著“對人類友好,對機器難搞”的原則,用戶只需要簡單點擊一個“我不是機器人”的複選框就可以,不 再需要分辨歪歪扭扭的驗證碼。 reCAPTCHA 通過收集用戶環境和行為數據,綜合分析、智能區分人和機器。 除此之外,阿里也發布了自己的滑動驗證碼,還有國內一些第三方的驗證碼服務也在快速迭代進化。 畢竟 Google 的服務不太穩定,他們還是獲得了自己的生長空間。 這些更高級的驗證碼服務,大部分都在標榜自己的 “人工智能”屬性 ,不管真假,這確實是個非常典型的機器學習應用場景,提供各種行為特徵,訓練算法去分辨人和機器。

把這個思路放大了來看: 過去由於技術,成本的限制,驗證碼這個設計變得理所應該。 但是隨著技術的演技,成熟。 我們再把過去由於服務方的成本考慮,而把責任推卸給用戶的那些設計拿出來重新思考設計,再搭配現有的成熟的技術,也許帶來革命性的用戶體驗。

用新方法解決老問題,或許不需要什麼翻天覆地的變化,只是撬鬆一兩塊被慣性封印的磚,就已經算得上強有力的推動了。 這是驗證碼給第一個啟發。

不要將責任轉移給用戶

從上文看來,讓用戶識別輸入驗證碼,其實是服務方因為技術,成本原因,無法區分任何機器的操作,而將這個責任轉移用戶,對於用戶來說,這件事情上沒有什麼價值, 還增加了操作成本。

你是否遇到過這樣的一個場景: 在輸入驗證碼的時候,經常反复操作,就是搞不定。

從產品經理的角度上來說我們可能會這樣跟用戶解釋:為了保證服務質量的安全提供,我們的驗證碼級別會相對較高。

用戶能理解嗎? 顯然是不能的。 我們的能力問題,卻讓他們付出成本,花費時間去識別圖片裡的圓圈是0還是O,讓他們承擔了我們本來應該承擔的責任。

舉一反三,如果再激進一點考慮,我們的軟件服務中還有不少推卸責任的設計,比如讓用戶在成千上萬的商品中篩选和比價,比如各種複雜的界面參數設置和興趣選擇。 要是想得再發散一點,所有的銀行賬戶密碼似乎也沒有必要,超市排隊也是一樣。

如果用戶不需要付出篩选和比價的成本,或不需要花費精力記住賬戶密碼,卻可以享受到同樣高質量的服務,是不是更好呢?

基於這樣的思考,我們是不是應該馬上去掉這些推卸責任的設計,比如想出更複雜的方案,替代現有的驗證碼機制呢? 這是關於驗證碼的第二個思考。

方案選擇如何平衡?

很多情況下,有效的設計並不是一個好的設計。

比如我之前設計的產品也用到了驗證碼,由於我們是做金融產品的,在風控上我們會做的規範和嚴謹。

而且在某些特殊階段(比如定向攻擊),我們還會升級驗證碼機制,讓驗證碼出現的頻率更高,而且更加難以辨認,從而在某些關鍵入口抵抗一些有針對性的攻擊。

這一策略是有效的,但對用戶體驗傷害也很大,升級驗證碼機制後,用戶登錄過程中耗費的時間會顯著增加,通過率也會下降,還有大量的用戶抱怨一股腦地湧進來 。

然而從服務提供方的角度來看,它卻用最低的成本快速地解決了當時面臨的問題。 這是產品設計方案選擇過程中不得不做出的“平衡”,很多時候我們沒有辦法第一時間實施對用戶的完美方案,這就需要在產品利益和用戶利益之間,找到微妙的 動態平衡點

所以讓一個產品經理講用戶價值其實不難,天花亂墜說完美方案也不難,難的是在實際工程裡做出合適的決定。 做工程大部分時候都滿身污垢,能在其中保持鎮定,保持平衡並不容易。

我們當時在扛過了幾輪攻擊之後,投入了一些技術資源,引入了更多靜默監測的策略。 比如記錄用戶密碼、記錄用戶上次登錄的位置 / 設備,或通過一些頁面動作來做出判斷,保證大部分老用戶和一部分新用戶不會受到驗證碼的打擾。

我們並沒有做到完美,因為資源永遠有限,我們需要把它更多投入到我們的競爭優勢上,所以還是保留了驗證碼機制。 在某些情況下還是用這種原始、粗暴,但有效的手段來解決問題——這就是我們選擇的平衡。 這是我對驗證碼的最後一個思考。

如此看來,一個簡單的驗證碼背後其實並不簡單。 它的設計初衷,發展演變,存在原因都值得我們深思。 通過這個思考也給我做產品帶來了幾個啟發:

  1. 所有的設計,都是要面對用戶,背靠技術的。 未來設計,就是緊跟科技發展,設計出“有增強作用的智慧型物品”,讓科技為人服務的過程。 在未來,不懂科技,就不懂設計。 舊問題+新科技,也會產出顛覆性的產品。
  2. 在如此復雜的世界,設計所要做的,不是變得簡單,而是綜合各方因素,資源。 讓設計基於各方利益的一個平衡點,以“友好”的方式,交付給用戶。

 

本文由 @王杰瑜 原創發佈於人人都是產品經理。 未經許可,禁止轉載。

題圖來自 Unsplash,基於 CC0 協議

如有侵權請來信告知:酷播亮新聞 » 驗證碼,引發了我的三點思考