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