本發(fā)明屬于信息安全,涉及一種基于高頻動態(tài)變換的驗證碼生成方法、系統(tǒng)、設(shè)備及介質(zhì)。
背景技術(shù):
1、在當(dāng)前的互聯(lián)網(wǎng)環(huán)境中,人機驗證是確保網(wǎng)絡(luò)安全、防止自動化腳本和惡意軟件攻擊的重要手段。傳統(tǒng)的人機驗證方法主要依賴于靜態(tài)或低頻率更新的驗證碼形式,如短信驗證碼、圖片驗證碼以及拖動補全圖片驗證碼等。雖然在一定程度上實現(xiàn)了用戶與機器的有效區(qū)分,但各自存在顯著的局限性和不足。
2、短信驗證碼作為最早被廣泛應(yīng)用的一種驗證方式,通過向用戶手機發(fā)送一次性驗證碼來驗證用戶的真實性。然而隨著其廣泛應(yīng)用,短信驗證碼的缺點也逐漸顯現(xiàn):首先短信驗證碼需要依賴移動通信網(wǎng)絡(luò),不僅增加了運營成本,還可能因網(wǎng)絡(luò)延遲或信號問題導(dǎo)致驗證失敗;其次短信驗證碼容易被攔截或模擬,存在安全隱患;并且短信驗證碼的使用場景受限,對于無手機或國際用戶不夠友好。
3、圖片驗證碼則是通過展示包含扭曲字符、圖形的圖片來要求用戶進(jìn)行識別。在一定程度上提高了機器識別的難度,但隨著ocr(光學(xué)字符識別)技術(shù)的飛速發(fā)展,圖片驗證碼的破解率越來越高,安全性逐漸降低。此外對于視力不佳或圖像識別能力較弱的用戶來說,圖片驗證碼也可能造成使用障礙。
4、拖動補全圖片驗證碼則試圖通過增加用戶的交互操作來提高驗證的安全性,但是在實際應(yīng)用中往往因為操作復(fù)雜、用戶體驗不佳而遭到用戶反感。同時某些自動化工具也能通過模擬用戶行為來繞過這種驗證方式。
5、鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明提出了一種基于高頻動態(tài)變換的驗證碼生成方法。該方法旨在通過動態(tài)生成并實時變換驗證碼內(nèi)容,結(jié)合用戶的實時操作反饋,形成一種更為高效、安全且用戶體驗良好的人機驗證方式。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于解決現(xiàn)有技術(shù)中的驗證碼不能有效抵抗ocr等自動化識別技術(shù)的攻擊,驗證過程中的動態(tài)性和交互性不足的問題,提供一種基于高頻動態(tài)變換的驗證碼生成方法、系統(tǒng)、設(shè)備及介質(zhì)。
2、為達(dá)到上述目的,本發(fā)明采用以下技術(shù)方案予以實現(xiàn):
3、一種基于高頻動態(tài)變換的驗證碼生成方法,包括以下步驟:
4、驗證碼生成,服務(wù)器接收下發(fā)驗證碼的請求后,隨機生成包含數(shù)字、字母或符號的驗證碼文本;生成唯一標(biāo)識符,并將該唯一標(biāo)識符與驗證碼文本作為鍵值對存儲在服務(wù)器的緩存中;
5、驗證碼圖片分割,將驗證碼文本轉(zhuǎn)換為靜態(tài)圖片,并將該圖片分割成多個區(qū)域;
6、區(qū)域頻率設(shè)置,為每個區(qū)域設(shè)置不同的且高于設(shè)定閾值的閃爍頻率,通過控制底色與文字顏色的快速交替實現(xiàn)閃爍,整體閃爍頻率高于設(shè)定閾值;
7、動態(tài)驗證碼展示,將生成的動態(tài)圖片驗證碼及對應(yīng)的唯一標(biāo)識符發(fā)送給客戶端進(jìn)行展示;
8、用戶輸入與驗證,用戶識別動態(tài)圖片中的驗證碼文本,并將其輸入到相應(yīng)的輸入框中;用戶觸發(fā)提交按鈕后,將輸入的驗證碼文本及對應(yīng)的唯一標(biāo)識符發(fā)送至服務(wù)器,服務(wù)器根據(jù)唯一標(biāo)識符在緩存中查找對應(yīng)的驗證碼文本;若緩存中存在該唯一標(biāo)識符且對應(yīng)的驗證碼文本與用戶輸入的文本一致,則驗證通過;若不存在或不一致,則重新生成驗證碼并發(fā)送至客戶端重新驗證。
9、所述驗證碼生成具體包括以下步驟:
10、接收驗證碼生成請求,請求由客戶端或應(yīng)用程序發(fā)起,并包含用戶標(biāo)識信息;
11、在服務(wù)器端,根據(jù)預(yù)設(shè)的規(guī)則和字符集隨機生成包含數(shù)字、字母和/或符號的驗證碼文本;
12、生成唯一標(biāo)識符,用于標(biāo)識本次生成的驗證碼;
13、將所述驗證碼文本與所述唯一標(biāo)識符作為鍵值對存儲在服務(wù)器的緩存中,其中鍵為唯一標(biāo)識符,值為驗證碼文本;
14、為存儲在緩存中的驗證碼文本設(shè)置自定義的有效時長,緩存系統(tǒng)根據(jù)設(shè)置的有效時長管理驗證碼文本的存儲周期,超過有效時長,則從緩存中刪除該驗證碼文本。
15、所述驗證碼圖片分割的具體步驟為:
16、對驗證碼圖片進(jìn)行預(yù)處理,包括灰度化、二值化和去噪,以減少顏色信息、分離驗證碼文本與背景,并去除圖片中的噪聲和干擾線條;
17、采用均分法對驗證碼圖片進(jìn)行分割,將驗證碼圖片分割成包含單個字符的多個區(qū)域;
18、驗證分割結(jié)果,確保每個區(qū)域都包含一個完整的字符,且沒有字符被錯誤地分割或遺漏。
19、所述采用均分法對驗證碼圖片進(jìn)行分割,具體為:
20、確定驗證碼圖片的總寬度或總高度以及驗證碼中包含的字符數(shù)量;
21、根據(jù)驗證碼圖片的總寬度或總高度和字符數(shù)量,計算每個字符應(yīng)占據(jù)的寬度或高度;
22、從驗證碼圖片的左邊界或上邊界開始,按照計算出的每個字符的寬度或高度,將圖片分割成多個等寬或等高的矩形區(qū)域。
23、所述區(qū)域頻率設(shè)置具體為:
24、確定最低的閃爍頻率閾值為50hz;為每個區(qū)域選擇一組底色和文字顏色,控制底色與文字顏色的快速交替,從而實現(xiàn)閃爍;為每個區(qū)域設(shè)置不同的閃爍頻率,并且所有區(qū)域的閃爍頻率均高于設(shè)定的閾值。
25、所述方法還包括對驗證碼的有效期管理方法,具體為:
26、在用戶請求驗證碼時,生成唯一的驗證碼,并記錄其生成時間;
27、將生成的驗證碼及其有效期存儲到服務(wù)端緩存中,確保驗證碼的臨時有效性;
28、當(dāng)用戶提交驗證碼進(jìn)行驗證時,從緩存中檢索與用戶請求相關(guān)聯(lián)的驗證碼及其有效期;
29、檢查緩存中驗證碼的有效期,若驗證碼未過期,即當(dāng)前時間未超過驗證碼生成時間加上設(shè)定的有效期,則繼續(xù)與用戶輸入的驗證碼進(jìn)行比對;若驗證碼已過期,則直接判定驗證失敗,用戶輸入的任何結(jié)果均無法通過驗證;
30、根據(jù)驗證碼比對結(jié)果,向用戶返回驗證成功或失敗的消息。
31、一種基于高頻動態(tài)變換的驗證碼生成系統(tǒng),包括以下模塊:
32、驗證碼生成模塊,用于接收下發(fā)驗證碼的請求,隨機生成包含數(shù)字、字母或符號的驗證碼文本,并生成與驗證碼文本相關(guān)聯(lián)的唯一標(biāo)識符;該模塊將驗證碼文本與唯一標(biāo)識符作為鍵值對存儲在服務(wù)器的緩存中,以便后續(xù)驗證;
33、驗證碼圖片轉(zhuǎn)換與分割模塊,將生成的驗證碼文本轉(zhuǎn)換為靜態(tài)圖片,并將該圖片分割成多個區(qū)域,每個區(qū)域包含驗證碼文本的一部分;
34、區(qū)域頻率設(shè)置模塊,為每個分割后的區(qū)域設(shè)置不同的且高于設(shè)定閾值的閃爍頻率,通過控制底色與文字顏色的快速交替實現(xiàn)閃爍效果,確保整體閃爍頻率也高于設(shè)定閾值;
35、動態(tài)驗證碼展示模塊,將經(jīng)過區(qū)域頻率設(shè)置后的動態(tài)圖片驗證碼及其對應(yīng)的唯一標(biāo)識符發(fā)送給客戶端進(jìn)行展示,以便用戶進(jìn)行識別;
36、用戶輸入與驗證模塊,接收用戶輸入的驗證碼文本及對應(yīng)的唯一標(biāo)識符,將輸入的驗證碼文本與服務(wù)器緩存中根據(jù)唯一標(biāo)識符檢索到的驗證碼文本進(jìn)行比對;若兩者一致且唯一標(biāo)識符有效,則驗證通過;若不一致或唯一標(biāo)識符無效,則提示用戶重新輸入或重新生成驗證碼。
37、所述系統(tǒng)還包括緩存管理模塊,用于定期清理過期或無效的驗證碼緩存項。
38、一種設(shè)備,包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運行的計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如前項任一項所述方法的步驟。
39、一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如前項任一項所述方法的步驟。
40、與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
41、本發(fā)明中的基于高頻動態(tài)變換的驗證碼生成方法,通過使驗證碼圖像以高于常規(guī)屏幕刷新率的頻率進(jìn)行動態(tài)變換,有效抵御了ocr等靜態(tài)圖像識別技術(shù)的攻擊,使得自動化腳本難以捕捉穩(wěn)定的驗證碼圖像進(jìn)行解析,從而大大提高了驗證碼的安全性。每個驗證碼區(qū)域設(shè)置不同的閃爍頻率,并結(jié)合底色與文字顏色的快速交替,使得驗證碼圖像呈現(xiàn)出高度的復(fù)雜性和不可預(yù)測性,不僅增加了人工識別的難度,也極大地降低了惡意用戶通過圖像處理技術(shù)偽造驗證碼的可能性。