驗(yàn)證碼的前世今生(前世篇)

驗(yàn)證碼的前世今生(前世篇)

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

0×1 誕生

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

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

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

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

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

[1] 驗(yàn)證碼的生成邏輯、答案用戶可見

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

[2] 驗(yàn)證碼的生命周期未控制好

如驗(yàn)證碼可以重復(fù)使用、不設(shè)超時。驗(yàn)證一次,永久使用。

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

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

a. 驗(yàn)證碼寫在cookie中。此處可導(dǎo)致旅客信息泄露。

網(wǎng)友評論