常在網上晃悠的人,對上面這張圖都不會陌生。特別是在註冊新帳號、確認交易時,它們都會頻繁出現,要求咱們輸入正確的驗證碼,那這些看上去跟咱們要作的事情徹底無關的驗證碼到底有何做用呢?html
常在網上晃悠的人,對上面這張圖都不會陌生。特別是在註冊新帳號、確認交易時,它們都會頻繁出現,要求咱們輸入正確的驗證碼,那這些看上去跟咱們要作的事情徹底無關的驗證碼到底有何做用呢?cookie
首先,先介紹下驗證碼程序的提出者,路易斯·馮·安(Luis von Ahn)。2002年,路易斯和他的小夥伴在卡內基梅隆第一次提出了CAPTCHA(驗證碼)這樣一個程序概念。該程序是指,向請求的發起方提出問題,能正確回答的便是人類,反之則爲機器。這個程序基於這樣一個重要假設:提出的問題要容易被人類解答,而且讓機器沒法解答。網站
在當時的條件下,識別扭曲的圖形,對於機器來講仍是一個很艱難的任務,而對於人來講,則相對能夠接受。yahoo在當時第一個應用了圖形化驗證碼這個產品,很快解決了yahoo郵箱上的垃圾郵件問題,所以圖形類驗證碼開始了大發展時期。ui
圖形化驗證碼在被證實有效後,在互聯網上迅速獲得了推廣。國內外各大網站,在關鍵的業務點上都加入了這一類型的驗證碼。spa
首先,因爲開發者水平的參差不齊,致使驗證碼自己的實現存在問題,從而致使漏洞能夠繞過,常見的有如下幾種類型:htm
如將驗證碼答案輸出到頁面中、寫在cookie裏。打比方就是說,在髮捲的時候,把答案寫在了卷子背面。(老師不再用擔憂個人成績)blog
如驗證碼能夠重複使用、不設超時。驗證一次,永久使用。生命週期
如修改業務參數可致使不用校驗驗證碼也可經過、甚至驗證碼就是擺設。結合到具體的業務點上有什麼危害呢?圖片
a. 驗證碼寫在cookie中。此處可致使旅客信息泄露。開發
b. 驗證碼與圖片存在對應關係,所以直接訪問html便可獲得答案。此處可致使撞庫與暴力破解密碼。
(上述兩例轉自烏雲)
在開篇咱們提到了一個重要的假設:
CAPTCHA提出的問題要容易被人類解答,而且讓機器沒法解答。
實際上,CAPTCHA所要處理的問題是:將普通人與惡意的用戶(黑客、垃圾消息發送者)區分開來。那當時間點到達2016年時,黑客們與普通用戶之間的差距已經很大了(想象下中國足球隊對巴西足球隊,並且此時留給中國隊的時間已經很少了)。
所以,CAPTCHA在圖片驗證碼這一應用點上已經沒法知足這一假設了。在這段時間內,出現了不少的增強和識別圖形驗證碼的方法(每一種方法的詳細原理和解釋,能夠參見wooyun drops,在此不作詳述):
附上部分名詞解釋: