本發(fā)明的實施方式中,所述字符映射信息在被所述服務(wù)器用于解密處理后失效,相應(yīng)地,所述服務(wù)器在執(zhí)行處理S220前需要識別所述字符映射信息是否未被用于解密處理,若是,則執(zhí)行處理S220,否則結(jié)束當(dāng)前流程或者返回執(zhí)行處理S210等。同時,在本發(fā)明的實施方式中,所述字符映射信息還可以設(shè)置有有效期,相應(yīng)地,所述服務(wù)器在進行處理S220前還需要識別當(dāng)前時間點是否在所述字符映射信息的有效期內(nèi),若所述字符映射信息未被用于解密處理且當(dāng)前時間點在所述有效期內(nèi),則執(zhí)行處理S220,否則,結(jié)束當(dāng)前流程或者返回執(zhí)行處理S210。
[0053]在本發(fā)明的實施方式中,例如,可以根據(jù)所述字符映射信息的狀態(tài)信息(例如,O代表未被用于解密處理,I代表已被用于解密處理)識別所述字符映射信息是否已被用于解密處理,并且在執(zhí)行處理S220后將所述字符映射信息的狀態(tài)信息進行修改,例如將O置為1,即將該字符映射信息在使用一次后即置為失效。
[0054]下面以僅對認(rèn)證信息中的密碼進行加密為例,對本發(fā)明所提供的認(rèn)證方法進行具體說明。該方法包括:
[°°55] 步驟1:客戶端向服務(wù)器發(fā)送URL(Uniform Resource Locator,統(tǒng)一資源定位符)。
[0056]步驟2:服務(wù)器根據(jù)該URL定位頁面并生成字符映射信息。
[0057]步驟3:服務(wù)器修改定位到頁面中表單的輸入域的name(名稱)。
[0058]其中,修改后的名稱可以是隨機生成的無意義的字符串,或者,按照一定的順序從數(shù)據(jù)庫中選取字符串作為修改后的名稱。
[0059]由于輸入域的name被擾亂,因此服務(wù)器無法正常讀取各輸入域的value(值),對此,需要在修改輸入域的name后,記錄各輸入域的修改后的name與修改前的name的對應(yīng)關(guān)系,該對應(yīng)關(guān)系例如可以是一串字符串,其格式為:userid = adjsfs | password = puoid9vertifycode = nciqui." ο
[0060]通過修改輸入域的name,使得黑客在截獲客戶端發(fā)送的報文后無法識別各輸入域所表達(dá)的意義,從而無法進行重放攻擊。
[0061]但是,由于輸入域的相對位置不變,黑客仍可以通過猜測當(dāng)前位置的輸入域所表達(dá)的意義對服務(wù)器發(fā)起攻擊。對此,為進一步防止黑客的攻擊,在本發(fā)明的實施方式中,對于定位到的頁面,除了進行上述的修改頁面中的輸入域的name的處理以外,也可以進行下述處理中的任意一種或多種的組合:
[0062](I)調(diào)整頁面中輸入域的順序;
[0063](2)向頁面中插入一個或多個輸入域。
[0064]通過上述處理可以防止黑客基于概率和代碼順序分析出當(dāng)前位置的輸入域所表達(dá)的意義。對于插入的輸入域,其名稱也可以是隨機生成的無意義的字符串。
[0065]為避免混淆,在這里將上述對名稱進行修改的輸入域稱為偽裝輸入域,將上述插入的輸入域稱為無效輸入域。
[0066]修改前的頁面中的表單例如為:
[0067]〈form act1n= “l(fā)oginAct1n,,method= “post,,〉
[0068]〈input type = “text,,name = “userid”/>
[0069]〈input type = “password”name = “password”/〉
[0070]〈input type = “text,,name = “vertifycode,,/>
[0071 ] 〈input type = “text”name = “submit”value = “提交,,/>
[0072]〈/form〉
[0073]經(jīng)擾亂后的表單例如為:
[0074]〈form act1n= “l(fā)oginAct1n,,method= “post,,〉
[0075]〈input type = “text,,name = “adjsfs,,/>〈!一原 user id—>
[0076]〈input type = “hidden”name = “eouida”/>
[0077]〈input type = “password”name= “sdiwada”/>
[0078]〈input type = “text,,name = “yukj,,/>
[0079]〈input type = “password”name=,,iuqku6,,/>
[0080]〈input type = “text,,name = “qihiqo,,/>
[0081 ] 〈input type = “password”name =,,puoid9”/><!—原password—>
[0082]〈input type = “text,,name = “nciqui,,/>〈!一J^vertifycode—>
[0083]〈input type = “text”name = “submit”value = “提交,,/>
[0084]〈/form〉
[0085]其中,名稱為3(1」8€8 41101(19以及11(^9111的輸入域為所述偽裝輸入域;名稱為60111(13、8(11¥3(13、71110、;!_叫1016以及9;!_11190的輸入域為所述無效輸入域。
[0086]為節(jié)約服務(wù)器端的內(nèi)存資源,在本發(fā)明的實施方式中,可以將所述對應(yīng)關(guān)系記載在表單的隱藏域中,同時,為避免黑客從客戶端盜取所述對應(yīng)關(guān)系,對該對應(yīng)關(guān)系進行加密,該隱藏域的具體形式例如為:
[0087]〈input type=,,hidden”name =,,ΜΑ(Γ
[0088]Value=”0IQ561WlHIQJWU45DIUrleUHD56DCIW83wEI3U”/>〈! 一對應(yīng)關(guān)系的密文一
>
[0089]當(dāng)然,本領(lǐng)域的技術(shù)人員也可以將所述對應(yīng)關(guān)系存儲在服務(wù)器的內(nèi)存中。
[0090]步驟4:服務(wù)器將生成的字符映射信息、該字符映射信息的編號以及修改后的頁面返回給所述客戶端。
[0091]步驟5:所述客戶端接收服務(wù)器響應(yīng)的頁面并加載該頁面以便于該頁面的表單采集用戶輸入的認(rèn)證信息,例如,用戶名和密碼等。
[0092]步驟6:所述客戶端基于所述對應(yīng)關(guān)系(例如:userid = adjsfs | password = puoid9vertifycode = nciqui...)對所述偽裝輸入域中待進行加密處理的輸入域(例如密碼域:
puoid9)添加onblur事件(光標(biāo)失去焦點時發(fā)生的事件),該onblur事件具體用于基于所述服務(wù)器返回的字符映射信息(例如:ahbccedgekf lgn...)對與其對應(yīng)的輸入域的value (例如用戶輸入的密碼:aabbcc)進行加密,其結(jié)果例如為:hhccee。
[0093]步驟7:客戶端在所述表單的隱藏域,例如CCB_PWD_MAP_DIGEST,中記錄上述加密處理所使用的字符映射信息的編號以及進行上述加密處理的輸入域的名稱(該名稱可以是修改前的名稱,也可以是修改后的名稱)。其具體格式為:字符映射信息編號I加密輸入域名11加密輸入域名2...。
[0094]步驟8:所述客戶端向所述服務(wù)器提交所述表單。
[0095]步驟9:所述服務(wù)器從所述表單的隱藏域MAC中讀取出所述對應(yīng)關(guān)系。
[0096]步驟10:所述服務(wù)器基于讀取出的對應(yīng)關(guān)系,獲取所述偽裝輸入域的名稱值對并根據(jù)獲取到的名稱值對建立名稱值對集合,其中,所述名稱值對中的名稱為輸入域的修改前的名稱,