王小東 孫永生
摘要:簡單討論了驗(yàn)證碼的作用、基本形式和原理。并通過源代碼較詳細(xì)地分析了圖片驗(yàn)證碼的ASP實(shí)現(xiàn)過程。
關(guān)鍵詞:驗(yàn)證碼圖片驗(yàn)證碼ASP
中圖分類號TP311.1文獻(xiàn)標(biāo)識(shí)碼B文章編號:1002-2422(2007)03-010-02
驗(yàn)證碼是表單驗(yàn)證的一種重要形式,是當(dāng)前許多表單網(wǎng)頁的基本功能。本文對驗(yàn)證碼的作用、基本形式和原理進(jìn)行討論,并且結(jié)合圖片驗(yàn)證碼的實(shí)現(xiàn),分別對其在服務(wù)器端實(shí)現(xiàn)和客戶端的實(shí)現(xiàn)進(jìn)行詳細(xì)的分析。
1驗(yàn)證碼的作用
(1)防止使用特定破解程序進(jìn)行不斷的非法登陸嘗試,如:發(fā)送垃圾郵件或通過同時(shí)反復(fù)登錄多個(gè)帳戶延緩、阻塞甚至使某個(gè)Web應(yīng)用崩潰。
(2)防止非法批量注冊,生成大量垃圾帳戶。
(3)防止利用機(jī)器人非法向BBS等Web應(yīng)用灌水,提交垃圾數(shù)據(jù)。
(4)培養(yǎng)用戶謹(jǐn)慎、負(fù)責(zé)的操作態(tài)度。
2驗(yàn)證碼的基本形式
(1)純數(shù)字形式驗(yàn)證碼,由于防范能力弱,目前基本不再使用。
(2)預(yù)先準(zhǔn)備圖片,隨機(jī)調(diào)用生成圖片驗(yàn)證碼。少數(shù)站點(diǎn)使用。本文主要討論這種方式。
(3)完全由程序隨機(jī)生成某種序列圖片,如:數(shù)字、字符甚至漢字,并加入干擾像素。防止OCR識(shí)別,僅僅滿足用戶肉眼識(shí)別圖片的驗(yàn)證碼信息,大多數(shù)站點(diǎn)使用。
3圖片驗(yàn)證碼兩種實(shí)現(xiàn)方式的原理
3.1服務(wù)器驗(yàn)證方式
用戶在進(jìn)入登陸頁時(shí)(index.asp),頁面程序按照一定算法生成一組數(shù)據(jù)。并存儲(chǔ)到Sesssion變量中以便提交后驗(yàn)證比較,然后編成合理的HTML字符串用Response.Write寫入,形成頁面顯示的與Sesssion變量數(shù)據(jù)對應(yīng)的圖片排列,即:圖片驗(yàn)證碼。
用戶提交頁面后,交與后臺(tái)驗(yàn)證程序(check,asp)并與存儲(chǔ)的Sesssion變量進(jìn)行驗(yàn)證比較,成功和失敗分別進(jìn)行不同處理和引導(dǎo)。
3.2客戶端驗(yàn)證方式
該驗(yàn)證方式在網(wǎng)頁提交到后臺(tái)之前通過客戶端腳本驗(yàn)證。生成驗(yàn)證碼圖片與上面的方法相同,但不在服務(wù)器端存儲(chǔ)驗(yàn)證數(shù)據(jù),而是通過寫入一段客戶端腳本驗(yàn)證代碼,并在代碼中嵌入驗(yàn)證數(shù)據(jù)從而進(jìn)行驗(yàn)證比較,驗(yàn)證成功后順利提交,驗(yàn)證失敗則要重新填寫。
4圖片驗(yàn)證碼的兩種實(shí)現(xiàn)方式
4.1服務(wù)器端驗(yàn)證實(shí)現(xiàn)(兩個(gè)文件:index.asp和cheek.asp)
(1)index.a(chǎn)sp,登陸(表單)頁面形成頁面顯示的與Session變量數(shù)據(jù)對應(yīng)的圖片排列,即:圖片驗(yàn)證碼
5說明
(1)本例調(diào)試環(huán)境:Windows XP Professional spl,IIS5.1,記事本。
(2)本例使用10副圖片:0.gif,1.gif ,1.gif,…,9.gif,并注意存儲(chǔ)路徑。
(3)客戶端驗(yàn)證的安全性能很低,但簡單、輕便、快捷,服務(wù)器端驗(yàn)證安全性高,但需要網(wǎng)絡(luò)流量消耗、服務(wù)器資源消耗,并有時(shí)間延遲。在實(shí)際應(yīng)用中,應(yīng)該把兩種方式的驗(yàn)證有機(jī)結(jié)合起來,以實(shí)現(xiàn)最佳功能和最高效率。