驗證碼的前世今生(前世篇)

驗證碼的前世今生(前世篇)

常在網(wǎng)上晃悠的人,對上面這張圖都不會陌生。特別是在注冊新賬號、確認交易時,它們都會頻繁出現(xiàn),要求我們輸入正確的驗證碼,那這些看上去跟我們要做的事情完全無關(guān)的驗證碼到底有何作用呢?

0×1 誕生

首先,先介紹下驗證碼程序的提出者,路易斯·馮·安(Luis von Ahn)。2002年,路易斯和他的小伙伴在卡內(nèi)基梅隆第一次提出了CAPTCHA(驗證碼)這樣一個程序概念。該程序是指,向請求的發(fā)起方提出問題,能正確回答的即是人類,反之則為機器。這個程序基于這樣一個重要假設:提出的問題要容易被人類解答,并且讓機器無法解答。

在當時的條件下,識別扭曲的圖形,對于機器來說還是一個很艱難的任務,而對于人來說,則相對可以接受。yahoo在當時第一個應用了圖形化驗證碼這個產(chǎn)品,很快解決了yahoo郵箱上的垃圾郵件問題,因此圖形類驗證碼開始了大發(fā)展時期。

0×2 發(fā)展與問題

圖形化驗證碼在被證明有效后,在互聯(lián)網(wǎng)上迅速得到了推廣。國內(nèi)外各大網(wǎng)站,在關(guān)鍵的業(yè)務點上都加入了這一類型的驗證碼。

首先,由于開發(fā)者水平的良莠不齊,導致驗證碼本身的實現(xiàn)存在問題,從而導致漏洞可以繞過,常見的有以下幾種類型:

[1] 驗證碼的生成邏輯、答案用戶可見

如將驗證碼答案輸出到頁面中、寫在cookie里。打比方就是說,在發(fā)卷的時候,把答案寫在了卷子背面。(老師再也不用擔心我的成績)

[2] 驗證碼的生命周期未控制好

如驗證碼可以重復使用、不設超時。驗證一次,永久使用。

[3] 業(yè)務邏輯與驗證碼結(jié)合點存在問題

如修改業(yè)務參數(shù)可導致不用校驗驗證碼也可通過、甚至驗證碼就是擺設。結(jié)合到具體的業(yè)務點上有什么危害呢?

a. 驗證碼寫在cookie中。此處可導致旅客信息泄露。

網(wǎng)友評論