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

圖1 隨機背景
產生驗證碼的核心文件yzm.php如下所示:
