驗證碼的前世今生(前世篇)
驗證碼的前世今生(前世篇)
常在網(wǎng)上晃悠的人,對上面這張圖都不會陌生。特別是在注冊新賬號、確認交易時,它們都會頻繁出現(xiàn),要求我們輸入正確的驗證碼,那這些看上去跟我們要做的事情完全無關(guān)的驗證碼到底有何作用呢?
0×1 誕生
首先,先介紹下驗證碼程序的提出者,路易斯·馮·安(Luis von Ahn)。2002年,路易斯和他的小伙伴在卡內(nèi)基梅隆第一次提出了CAPTCHA(驗證碼)這樣一個程序概念。該程序是指,向請求的發(fā)起方提出問題,能正確回答的即是人類,反之則為機器。這個程序基于這樣一個重要假設(shè):提出的問題要容易被人類解答,并且讓機器無法解答。
在當(dāng)時的條件下,識別扭曲的圖形,對于機器來說還是一個很艱難的任務(wù),而對于人來說,則相對可以接受。yahoo在當(dāng)時第一個應(yīng)用了圖形化驗證碼這個產(chǎn)品,很快解決了yahoo郵箱上的垃圾郵件問題,因此圖形類驗證碼開始了大發(fā)展時期。
0×2 發(fā)展與問題
圖形化驗證碼在被證明有效后,在互聯(lián)網(wǎng)上迅速得到了推廣。國內(nèi)外各大網(wǎng)站,在關(guān)鍵的業(yè)務(wù)點上都加入了這一類型的驗證碼。
首先,由于開發(fā)者水平的良莠不齊,導(dǎo)致驗證碼本身的實現(xiàn)存在問題,從而導(dǎo)致漏洞可以繞過,常見的有以下幾種類型:
[1] 驗證碼的生成邏輯、答案用戶可見
如將驗證碼答案輸出到頁面中、寫在cookie里。打比方就是說,在發(fā)卷的時候,把答案寫在了卷子背面。(老師再也不用擔(dān)心我的成績)
[2] 驗證碼的生命周期未控制好
如驗證碼可以重復(fù)使用、不設(shè)超時。驗證一次,永久使用。
[3] 業(yè)務(wù)邏輯與驗證碼結(jié)合點存在問題
如修改業(yè)務(wù)參數(shù)可導(dǎo)致不用校驗驗證碼也可通過、甚至驗證碼就是擺設(shè)。結(jié)合到具體的業(yè)務(wù)點上有什么危害呢?
a. 驗證碼寫在cookie中。此處可導(dǎo)致旅客信息泄露。
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式