本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種用時(shí)間驗(yàn)證驗(yàn)證碼的方法。
背景技術(shù):
目前,驗(yàn)證碼已經(jīng)被廣泛應(yīng)用在互聯(lián)網(wǎng)領(lǐng)域。用戶在訪問網(wǎng)頁(yè)或在移動(dòng)終端上使用app時(shí),經(jīng)常要輸入驗(yàn)證碼,以防止終端app或者某一頁(yè)面被惡意使用。驗(yàn)證碼通常由服務(wù)器端根據(jù)客戶端的身份驗(yàn)證請(qǐng)求生成并發(fā)送給客戶端,其形式一般為經(jīng)過處理的包含一些抽象的數(shù)字、英文、漢字或者物品圖像的組合的圖片,用戶只有輸入或選擇正確的驗(yàn)證碼,才能完成身份的驗(yàn)證。
但是,為了防止機(jī)器對(duì)驗(yàn)證碼的破解,客戶端所展示的驗(yàn)證碼被加工得越來(lái)越復(fù)雜,越來(lái)越難以被人識(shí)別。即使如此,隨著機(jī)器智能越來(lái)越高,復(fù)雜的驗(yàn)證碼也容易被機(jī)器所破解。這對(duì)人們對(duì)互聯(lián)網(wǎng)的使用構(gòu)成了很大的威脅,同時(shí)也引起了不公平性。
技術(shù)實(shí)現(xiàn)要素:
為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題, 特提出以下技術(shù)方案:
本發(fā)明提供一種用時(shí)間驗(yàn)證驗(yàn)證碼的方法,包括:
接收到來(lái)自客戶端的獲取驗(yàn)證碼請(qǐng)求時(shí),生成待驗(yàn)證碼和參考驗(yàn)證碼,確定無(wú)效驗(yàn)證時(shí)間t;
向客戶端提供參考驗(yàn)證碼,等待接收客戶端提交驗(yàn)證碼驗(yàn)證信息;
若接收到客戶端提交的驗(yàn)證碼驗(yàn)證信息,則確定驗(yàn)證碼驗(yàn)證所花時(shí)間T;
把所述無(wú)效驗(yàn)證時(shí)間t與所述驗(yàn)證所花時(shí)間T相比較,判斷t是否小于T,如果是,則判定用戶所提交的所述驗(yàn)證碼驗(yàn)證信息有效,否則判定用戶所提交的所述驗(yàn)證碼驗(yàn)證信息無(wú)效。
需要說明的是,所述待驗(yàn)證碼是根據(jù)客戶端請(qǐng)求生成的,一般為數(shù)字、英文、漢字或者物品圖像;所述參考驗(yàn)證碼是提供給客戶端展示的,其形式一般為經(jīng)過處理的包含所述待驗(yàn)證碼的圖片,用戶根據(jù)所述參考驗(yàn)證碼輸入或選擇所述驗(yàn)證信息以便提交驗(yàn)證;所述驗(yàn)證碼驗(yàn)證信息是用戶根據(jù)所述參考驗(yàn)證碼填寫或選擇然后提交的,一般為數(shù)字、英文、漢字或者物品圖像信息,與所述待驗(yàn)證碼對(duì)應(yīng)。
還需要說明的是,所述驗(yàn)證所花時(shí)間T為一個(gè)時(shí)間間隔,可以為從接收到來(lái)自客戶端的獲取驗(yàn)證碼請(qǐng)求(設(shè)時(shí)刻為T1)到對(duì)接收到的客戶端提交的所述驗(yàn)證碼驗(yàn)證信息進(jìn)行驗(yàn)證(設(shè)時(shí)刻為T2)之間的某個(gè)時(shí)間間隔,0<T<=T2-T1。
此外,把所述無(wú)效驗(yàn)證時(shí)間t與所述驗(yàn)證所花時(shí)間T相比較,來(lái)判斷所述驗(yàn)證碼驗(yàn)證信息是否有效,并不是說不需要把所述驗(yàn)證碼驗(yàn)證信息與所述待驗(yàn)證碼進(jìn)行匹配,只有當(dāng)兩個(gè)驗(yàn)證檢測(cè)都通過了才能確定此次驗(yàn)證通過。
優(yōu)選地,所述驗(yàn)證所花時(shí)間T為向客戶端發(fā)送所述參考驗(yàn)證碼(設(shè)時(shí)刻為T1’)到接收到來(lái)自客戶端的所述驗(yàn)證碼驗(yàn)證信息(設(shè)時(shí)刻為T2’)之間的時(shí)間間隔,即T= T2’- T1’。
優(yōu)選地,所述無(wú)效驗(yàn)證時(shí)間t包括固定時(shí)間t1和可變時(shí)間t2。
需要說明的是,所述固定時(shí)間t1在每次驗(yàn)證過程中是不變的,除非對(duì)該固定值進(jìn)行調(diào)整,調(diào)整后的t1在每次驗(yàn)證請(qǐng)求中也是不變的;所述可變時(shí)間t2在每次驗(yàn)證過程中是可變化的,即每次的t2值都有可能與上次的不同。
優(yōu)選地,所述可變時(shí)間t2隨機(jī)產(chǎn)生,為0~t3之間的任一隨機(jī)值,且t3>=0。
所述t3為一固定時(shí)間值,該值不因每次的用戶驗(yàn)證請(qǐng)求發(fā)生變化。
優(yōu)選地,所述無(wú)效驗(yàn)證時(shí)間t、固定時(shí)間t1和可變時(shí)間t2三者的關(guān)系為,t=t1+t2。
所述固定時(shí)間t1以及所述可變時(shí)間t2的最大值t3,一般通過綜合考慮驗(yàn)證碼難易程度、應(yīng)用場(chǎng)景和用戶體驗(yàn)等因素來(lái)確定。比如所述固定時(shí)間t1可以為根據(jù)統(tǒng)計(jì)得到的用戶輸入或選擇驗(yàn)證碼所花費(fèi)的平均時(shí)間,t3的值可取為t1值的一半。
優(yōu)選地,在響應(yīng)客戶端的獲取驗(yàn)證碼請(qǐng)求時(shí),除了向客戶端發(fā)送所述參考驗(yàn)證碼外,還需把所述無(wú)效驗(yàn)證時(shí)間t發(fā)送給客戶端。
向客戶端發(fā)送所述無(wú)效驗(yàn)證時(shí)間t,是為了讓客戶端知道此次驗(yàn)證過程的有效時(shí)間。
優(yōu)選地,當(dāng)客戶端接收到所述無(wú)效驗(yàn)證時(shí)間t后,執(zhí)行如下步驟,包括:
獲取所述無(wú)效驗(yàn)證時(shí)間t并確定接收到該信息的時(shí)刻T3,根據(jù)t確定客戶端驗(yàn)證碼的無(wú)效發(fā)送時(shí)間t’,等待所述驗(yàn)證碼驗(yàn)證信息提交操作發(fā)生;
若檢測(cè)到所述驗(yàn)證碼驗(yàn)證信息提交操作發(fā)生,則獲取該操作發(fā)生的時(shí)刻T4;
比較所述無(wú)效發(fā)送時(shí)間t’同T4-T3的大小,若 T4-T3> t’,則發(fā)送所述驗(yàn)證碼驗(yàn)證信息;若T4-T3<= t’,則不發(fā)送所述驗(yàn)證碼驗(yàn)證信息。
所述無(wú)效發(fā)送時(shí)間t’的取值與所述無(wú)效驗(yàn)證時(shí)間t的取值相關(guān),所以所述無(wú)效發(fā)送時(shí)間t’會(huì)隨著所述無(wú)效驗(yàn)證時(shí)間t的變化而變化,如果每次驗(yàn)證過程中的所述無(wú)效驗(yàn)證時(shí)間t不同,則所述無(wú)效發(fā)送時(shí)間t’也會(huì)不同。
在客戶端設(shè)置所述無(wú)效發(fā)送時(shí)間t’,是為了防止客戶端因?yàn)檫^早提交所述驗(yàn)證碼驗(yàn)證信息,這很可能會(huì)造成本次的所述驗(yàn)證所花時(shí)間T不大于所述無(wú)效驗(yàn)證時(shí)間t,從而造成本次驗(yàn)證不通過。
優(yōu)選地,所述無(wú)效發(fā)送時(shí)間t’與所述無(wú)效驗(yàn)證時(shí)間t的值的關(guān)系為:t’>=t。
使所述無(wú)效發(fā)送時(shí)間t’與所述無(wú)效驗(yàn)證時(shí)間t的值相等,或者t’>t,能保證本次的所述驗(yàn)證所花時(shí)間T大于所述無(wú)效驗(yàn)證時(shí)間t。
優(yōu)選地,所述驗(yàn)證碼驗(yàn)證信息中,除了包含用戶提交的驗(yàn)證碼外,還包含有需要對(duì)所提交的驗(yàn)證碼進(jìn)行時(shí)間有效性檢測(cè)的消息。
需要說明的是,所述驗(yàn)證碼驗(yàn)證信息中帶有需要對(duì)所提交的驗(yàn)證碼進(jìn)行時(shí)間有效性檢測(cè)的消息,是為了告訴接收者對(duì)所述無(wú)效驗(yàn)證時(shí)間t和所述驗(yàn)證所花時(shí)間T進(jìn)行比較,以確定所提交的驗(yàn)證碼在時(shí)間上的有效性。
相較于現(xiàn)有技術(shù),本發(fā)明提供的一種用時(shí)間驗(yàn)證驗(yàn)證碼的方法,雖然不能防止機(jī)器在某次驗(yàn)證過程中對(duì)驗(yàn)證碼的破解,但在驗(yàn)證所花時(shí)間上,把機(jī)器和人放在了一個(gè)相對(duì)平等的位置。在驗(yàn)證碼的驗(yàn)證過程中,即使機(jī)器破解了驗(yàn)證碼,其驗(yàn)證過程所花時(shí)間和人也相差不大,較大程度緩解了惡意程序?qū)W(wǎng)站或移動(dòng)app的暴力破解。
特別地,在一些購(gòu)票、搶購(gòu)等購(gòu)物網(wǎng)站(或app)中,由于本發(fā)明中所設(shè)置的所述無(wú)效驗(yàn)證時(shí)間包含可變時(shí)間t2,惡意程序不能按照固定的時(shí)間提交驗(yàn)證,甚至提交驗(yàn)證的時(shí)間有可能比正常用戶晚,有效保證了公平購(gòu)物。同時(shí),所述參考驗(yàn)證碼也可以設(shè)計(jì)得更便于人識(shí)別一些。
此外,本發(fā)明提供的一種用時(shí)間驗(yàn)證驗(yàn)證碼的方法,結(jié)構(gòu)簡(jiǎn)單,實(shí)現(xiàn)容易,且所花費(fèi)的額外資源幾乎可以忽略不計(jì)。
附圖說明
圖1為本發(fā)明一種用時(shí)間驗(yàn)證驗(yàn)證碼的方法的流程圖;
圖2為本發(fā)明中客戶端接收到所述無(wú)效驗(yàn)證時(shí)間t后執(zhí)行過程的一個(gè)實(shí)施例的流程圖。
具體實(shí)施方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
參照?qǐng)D1,示出了本發(fā)明一種用時(shí)間驗(yàn)證驗(yàn)證碼的方法的流程圖,包括:
步驟101、接收到來(lái)自客戶端的獲取驗(yàn)證碼請(qǐng)求時(shí),生成待驗(yàn)證碼和參考驗(yàn)證碼,確定無(wú)效驗(yàn)證時(shí)間t;
步驟102、向客戶端提供參考驗(yàn)證碼,等待接收客戶端提交驗(yàn)證碼驗(yàn)證信息;
步驟103、若接收到客戶端提交的驗(yàn)證碼驗(yàn)證信息,則確定驗(yàn)證碼驗(yàn)證所花時(shí)間T;
步驟104、把所述無(wú)效驗(yàn)證時(shí)間t與所述驗(yàn)證所花時(shí)間T相比較,判斷t是否小于T;
步驟105、如果是,則判定用戶所提交的所述驗(yàn)證碼驗(yàn)證信息有效;
步驟106、否則判定用戶所提交的所述驗(yàn)證碼驗(yàn)證信息無(wú)效。
具體地,所述驗(yàn)證所花時(shí)間T為向客戶端發(fā)送所述參考驗(yàn)證碼(設(shè)時(shí)刻為T1’)到接收到來(lái)自客戶端的所述驗(yàn)證碼驗(yàn)證信息(設(shè)時(shí)刻為T2’)之間的時(shí)間間隔,即T= T2’- T1’。
在具體實(shí)施時(shí),把所述無(wú)效驗(yàn)證時(shí)間t與所述驗(yàn)證所花時(shí)間T相比較,來(lái)判斷所述驗(yàn)證碼驗(yàn)證信息是否有效,并不是說不需要把所述驗(yàn)證碼驗(yàn)證信息與所述待驗(yàn)證碼進(jìn)行匹配,只有當(dāng)兩個(gè)驗(yàn)證檢測(cè)都通過了才能確定此次驗(yàn)證通過。
作為一個(gè)優(yōu)選方案,所述無(wú)效驗(yàn)證時(shí)間t包括固定時(shí)間t1和可變時(shí)間t2。
具體地,所述可變時(shí)間t2隨機(jī)產(chǎn)生,為0~t3之間的任一隨機(jī)值,且t3>=0。
所述t3為一固定時(shí)間值,即為所述可變時(shí)間t2的最大值,該值不因每次的用戶驗(yàn)證請(qǐng)求發(fā)生變化。
具體地,所述無(wú)效驗(yàn)證時(shí)間t、固定時(shí)間t1和可變時(shí)間t2三者的關(guān)系為,t=t1+t2。
實(shí)際實(shí)施時(shí),所述固定時(shí)間t1可以為根據(jù)統(tǒng)計(jì)得到的用戶輸入或選擇驗(yàn)證碼所花費(fèi)的平均時(shí)間,t3的值可取為t1值的一半。例如t1取3秒,它的一半就是1.5秒,即t3的值為1.5秒。
作為一個(gè)較好的實(shí)施例,在響應(yīng)客戶端的獲取驗(yàn)證碼請(qǐng)求時(shí),除了向客戶端發(fā)送所述參考驗(yàn)證碼外,還需向客戶端發(fā)送所述無(wú)效驗(yàn)證時(shí)間t。
作為常見的客戶端/服務(wù)器模式,上述實(shí)施例一般都是在服務(wù)器端實(shí)現(xiàn)的。圖2為本發(fā)明中客戶端接收到所述無(wú)效驗(yàn)證時(shí)間t后執(zhí)行過程的一個(gè)實(shí)施例的流程圖,包括如下步驟:
步驟201、獲取所述無(wú)效驗(yàn)證時(shí)間t并確定接收到該信息的時(shí)刻T3,根據(jù)t確定客戶端驗(yàn)證碼的無(wú)效發(fā)送時(shí)間t’,等待所述驗(yàn)證碼驗(yàn)證信息提交操作發(fā)生;
步驟202、若檢測(cè)到所述驗(yàn)證碼驗(yàn)證信息提交操作發(fā)生,則確定該操作發(fā)生的時(shí)刻T4;
步驟203、比較所述無(wú)效發(fā)送時(shí)間t’同T4-T3的大?。?/p>
步驟204、若 T4-T3> t’,則發(fā)送所述驗(yàn)證碼驗(yàn)證信息;
步驟205、若T4-T3<= t’,則不發(fā)送所述驗(yàn)證碼驗(yàn)證信息。
客戶端獲取所述無(wú)效驗(yàn)證時(shí)間t,是為了確定無(wú)效發(fā)送時(shí)間t’。作為一個(gè)較好實(shí)施例,所述無(wú)效發(fā)送時(shí)間t’與所述無(wú)效驗(yàn)證時(shí)間t的值的關(guān)系為:t’>=t。具體實(shí)施時(shí),t’可直接取t的值,即t’=t。
為了較好的用戶體驗(yàn),客戶端可以根據(jù)所述無(wú)效發(fā)送時(shí)間t’給用戶顯示是否準(zhǔn)備就緒的提醒。例如,可以在客戶端界面設(shè)置一個(gè)計(jì)時(shí)器,告訴用戶還有多少時(shí)間可以提交驗(yàn)證碼所在的表單。還可以在客戶端驗(yàn)證碼準(zhǔn)備就緒時(shí),由系統(tǒng)立即發(fā)送驗(yàn)證碼所在的表單。
作為一個(gè)較好的實(shí)施例,所述驗(yàn)證碼驗(yàn)證信息中,除了包含用戶提交的驗(yàn)證碼外,還包含有需要對(duì)所提交的驗(yàn)證碼進(jìn)行時(shí)間有效性檢測(cè)的消息。
也就是說,在具體實(shí)施中,客戶端在接收到所述參考驗(yàn)證碼后的任何時(shí)間內(nèi),都可以發(fā)送檢驗(yàn)用戶在客戶端輸入或選擇的驗(yàn)證碼是否與所述待驗(yàn)證碼匹配的請(qǐng)求。
每次驗(yàn)證過程中,所述無(wú)效驗(yàn)證時(shí)間t、時(shí)刻T1’、時(shí)刻T2’、時(shí)刻T3、時(shí)刻T4等時(shí)間值的產(chǎn)生都是獨(dú)立的,非本次驗(yàn)證過程產(chǎn)生的這些值不對(duì)本次的造成干擾。
以上實(shí)施例的技術(shù)方案僅用以說明本發(fā)明,而非對(duì)其限制。盡管參照前述各實(shí)施例的技術(shù)方案對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明具體技術(shù)方案的精神和范圍。