◆黃玲娜
(無錫城市職業(yè)技術(shù)學(xué)院 江蘇 214000)
網(wǎng)頁驗證碼的研究與實現(xiàn)
◆黃玲娜
(無錫城市職業(yè)技術(shù)學(xué)院 江蘇 214000)
隨著計算機通信技術(shù)的日趨成熟,網(wǎng)絡(luò)與人們的關(guān)系愈加密切,網(wǎng)絡(luò)安全問題越來越被人們所重視。網(wǎng)頁驗證碼是一種常用的網(wǎng)絡(luò)安全技術(shù),可以有效防止不法分子非法大量注冊網(wǎng)站賬號,保障網(wǎng)站的正常運轉(zhuǎn),提高網(wǎng)站系統(tǒng)的安全性和可靠性。本文介紹了網(wǎng)頁驗證碼的基本工作原理,并用PHP技術(shù)實現(xiàn)了在網(wǎng)頁注冊登錄界面通過驗證碼驗證用戶的功能。
PHP;驗證碼;網(wǎng)絡(luò)安全
在計算機網(wǎng)絡(luò)高速發(fā)展的今天,網(wǎng)絡(luò)安全問題越來越被人們所重視。大部分的網(wǎng)站都采用了會員登錄制,必須首先注冊成為會員后才能正常使用網(wǎng)站的各項功能(如BBS論壇、電子商務(wù)網(wǎng)站等)。但是總有那么一些不法分子利用網(wǎng)站在設(shè)計上的漏洞批量注冊賬號用以論壇灌水、刷信譽、反復(fù)享受網(wǎng)站的各項優(yōu)惠政策,這些行為給普通用戶和網(wǎng)站管理者帶來了極大的煩惱。針對這一現(xiàn)象,各項安全技術(shù)孕育而生,驗證碼是其中最為常見的一種技術(shù)。
驗證碼是防范網(wǎng)絡(luò)上有人利用機器自動批量注冊、暴力破解密碼的一種安全措施,它可以甄別訪問者是個人用戶還是機器。從技術(shù)上看,驗證碼其實是服務(wù)器端隨機生成的一串字符,它一般直接顯示在網(wǎng)頁上,由瀏覽器端用戶肉眼識別字符信息,輸入表單后提交到網(wǎng)站服務(wù)器驗證,驗證成功后才能繼續(xù)訪問網(wǎng)頁[1]。驗證碼的實現(xiàn)方法很多,PHP技術(shù)是目前常用的網(wǎng)站開發(fā)環(huán)境,使用這種技術(shù)能方便、快速有效地實現(xiàn)驗證碼功能,增強網(wǎng)站的安全性和可靠性。
驗證碼技術(shù)原理是:在每次向網(wǎng)頁提交信息的時候,系統(tǒng)會自動隨機產(chǎn)生一串?dāng)?shù)字或符號(即驗證碼),只有在指定的地方正確輸入這些驗證碼才能成功提交信息[2]。
驗證碼的形式很多,有數(shù)字驗證碼、圖形驗證碼、文字驗證碼。利用圖像處理技術(shù)創(chuàng)建的驗證碼更加豐富多彩,要利用該技術(shù)必須首先在PHP技術(shù)中加載GD庫以及完成Jpgraph的安裝和配置。
1.1 GD庫和Jpgraph繪圖組件
GD庫是一個開放的、動態(tài)創(chuàng)建圖像的、源代碼公開的函數(shù)庫,用于對圖像的處理。GD庫在PHP中是默認(rèn)安裝的,但要激活GD庫,需要設(shè)置php.ini文件[3]。將文件中的“;extension=php_gd2.dll”選項前的分號刪除后保存并重新啟動Apache,加載成功后可以使用phpinfo()函數(shù)查看GD函數(shù)庫的信息,從而驗證該函數(shù)庫是否加載成功。
Jpgraph是一個強大的繪圖組件,可以根據(jù)用戶提供的數(shù)據(jù)調(diào)用繪圖函數(shù)在頁面上繪制各種圖形,Jpgraph組件的運行需要GD庫的支持,使用Jpgraph組件和GD庫就可以實現(xiàn)豐富多彩的圖形圖像。而在產(chǎn)生驗證碼過程中,給驗證碼添加彩色背景比呆板的純數(shù)字驗證碼更加美觀,更能引起用戶的關(guān)注。
1.2 Smarty模板
Smarty模板是PHP項目開發(fā)的常用模板,可以實現(xiàn)網(wǎng)頁代碼控制和頁面美工分離,從而使得開發(fā)過程更加清晰明了,也利于項目后期的修改和完善。而且Smarty運行速度極快;效率高;模板只需被解析一次,無需重復(fù)[4],正是由于Smarty模板的高效性以及合理的開發(fā)模式,使得Smarty模板在網(wǎng)站開發(fā)過程中成為開發(fā)人員的有力臂膀。
2.1 在PHP文件中利用GD函數(shù)生成驗證碼
為了給驗證碼添加如下圖所示的隨機背景,可以使用GD函數(shù)庫中的Imagecreate()函數(shù)創(chuàng)建一個畫布,使用mt_rand()函數(shù)隨機生成驗證數(shù)字的字體、位置、顏色,這樣不僅可以使頁面每次刷新后都能顯示不同樣式的驗證碼,而且也可以有效的防止對網(wǎng)站的惡意攻擊。
圖1 隨機背景
產(chǎn)生驗證碼的核心文件yzm.php如下所示: