常在網路上到處瀏覽的朋友一定對「驗證碼」這種東西不陌生,通常會出現驗證碼的場合不外乎就是為了安全性的考量,為了防止駭客利用自動化程式做暴力式的登入嘗試,防止自動化程式在留言板討論區等的洗版行為,或是頻繁存取導致伺服器崩潰等等情況,而設立的安全性確認措施。

簡單來說,驗證碼的存在只有一個任務:「確認你是真人還是機器人!」

驗證碼的正式名稱叫做「自動區分計算機和人類的圖靈測試」(Completely Automated Public Turing test to tell Computers and Humans Apart,簡稱 CAPTCHA),簡單的來說,就是做一個「人類可以回答,但是電腦無法回答的問題」。

但是俗話說得好:「道高一尺,魔高一丈。」既然它的工作是防堵駭客與自動化程式,想當然也是許多駭客企圖破解的目標之一,破解以及防堵似乎永遠沒有停止的一天。

驗證碼系統大拚比,黏功、動態、圖片、中文都是一招

現在最常見的驗證碼系統不外乎就是 reCAPTCHA 了(目前為 Google 所有),基本上 reCAPTCHA 是一個免費的服務。而值得一提的是,這套系統利用讓使用者輸入驗證碼的方式,來幫助傳統文字典籍數位化的進行,主要是《New York Times》以及一些 Google Books 上的書籍)。

系統每次都會出現兩組字符讓使用者輸入,一組是真正的驗證碼,而另外一組是需要數位化的文字(使用者並不知道那組是驗證碼),當使用者輸入兩串字符並且答對驗證碼的時候,系統就藉以認為需要數位化的文字是被人類所正確辨識的。

所以,大家可是在無意間參與了古籍的數位化工作呢!

除了 reCAPTCHA 以外,其他比較完善的 CAPTCHA 系統也都會擁有語音輔助,以方便視障人士使用。

還有一種常見的叫做 KCAPTCHA,主要特徵是將所有的文字都「黏」在一起,讓電腦難以判讀各個字母。

雖然很誇張,但是的確出現過動態圖檔的 CAPTCHA,對於電腦來說,想辨識出來可以說是不可能的任務啊!

Paypal 標籤雲式的驗證碼也可以算是一個經典。

最近中國的網站常常可以看到許多創新的驗證碼系統,例如像下面這種與圖片結合在一起的驗證碼,達到了電腦難以判讀的前提,而對於人類來說,辨識起來是一點也不困難!


或是跟廣告做結合的策略也是相當有創意。

驗證碼只有英文嗎?利用中文字的驗證碼也是很有效果,畢竟中文字的文字辨識技術比起英文字符要來得難許多。不過缺點可能就是對於看不懂中文字的族群不夠友善、而且中文在手持裝置上輸入更耗時。


驗證碼已經夠討厭了,別再讓使用者看不懂!

雖然驗證碼對於系統安全管理的存在上有其必要性,但是對於使用者而言,驗證碼從來不是一個受歡迎的東西。

首先,不管使用者想要做什麼事情,要求使用者填額外的一串字,絕對不是個令人開心的行為。

再者就是大部分的驗證碼系統實在太容易出現令人難以閱讀的字符了,尤其是出現英文字符的 I、i、l、L、o、O 以及數字 0 等等時。當一次次的回應使用者驗證碼輸入錯誤,可是會讓人想翻桌的。畢竟在大部分的情況下,做出讓電腦看不懂的文字,那麼對於人類來說常常也不會容易閱讀到哪裡去。

結合圖片或是中文的驗證碼系統雖然改善這點,但是網路流量相對提升、安全性以及資料庫是否充足等,也是需要克服的缺點呢。

(參考資料:CAPTCHA、reCAPTCHA;封面圖片:sebastiankippe, CC Licensed)