?

基于WEB開發技術的新型驗證碼的設計研究

2016-09-03 08:09藺佳哲王茜謝楠空軍勤務學院航空彈藥系航空四站系江蘇徐州221000
石家莊學院學報 2016年3期
關鍵詞:語音漢字服務器

藺佳哲,王茜,謝楠(空軍勤務學院.航空彈藥系;.航空四站系,江蘇徐州221000)

?

基于WEB開發技術的新型驗證碼的設計研究

藺佳哲a,王茜a,謝楠b
(空軍勤務學院a.航空彈藥系;b.航空四站系,江蘇徐州221000)

為了防止非法用戶利用惡意代碼重復登錄網站,采用WEB開發技術設計一種拉伸漢字的圖形驗證碼,同時在不影響用戶識別的基礎上,增加背景干擾.在Apache服務器上的運行結果表明,該圖形驗證碼能夠有效地阻止非法用戶的攻擊,提高了網絡系統的安全性.

驗證碼;WEB開發;PHP;網絡安全

0引言

驗證碼最早是在2002年由卡內基梅隆大學的Luis Von Ahn、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford所提出[1],是一種區分用戶是計算機還是人的公共全自動程序,簡稱圖靈測試.驗證碼通常是由計算機生成的一種驗證方式,一般只有用戶才可以填寫并且提交.

驗證碼通常被用于防止批量注冊,也能夠有效防止黑客針對某個注冊用戶通過特定程序暴力破解方式進行不斷的登陸嘗試.目前不少網站為了防止用戶利用機器人自動注冊、登錄、灌水,都采用了驗證碼技術;在一些貼吧中,未登錄發貼需要輸入驗證碼,也是為了防止大規模匿名回帖的發生.現今一般注冊用戶ID的網站以及各大論壇都需要輸入驗證碼,已經成為很多網站中通用的方式[2].

1驗證碼技術和識別技術

1.1驗證碼技術最新現狀

隨著計算機技術和網絡開發技術的迅速發展,涌現出大量的新型驗證碼的生成算法,筆者篩選幾類有代表性的驗證碼如下.

1.1.1基于FusionCharts的圖形驗證碼

采用新的驗證碼生成算法,使其字符個數、字符出現的位置都是不固定的,結合FusionCharts技術予以實現.其主要特點為原始圖片不包含任何驗證碼信息,需要結合鼠標事件才能獲取有效的驗證碼.實驗證明,采用該方法可以大幅提高驗證碼的可靠性、健壯性、易用性,并且FusionCharts圖形界面友好,增強了用戶體驗,最終提高Web安全性[3].

1.1.2基于共振峰合成和韻律調整的語音驗證碼

基于共振峰合成、修改時長和調節韻律的隨機語音驗證碼生成方法,可以提高語音驗證技術的有效性.選擇音素作為語音合成單元,基于規則在合成過程中設定隨機語速參數,以及調整單元之間的連接規則來實現韻律的隨機調整,使得語速和韻律具有不確定性和不可預測性,從而有效降低了自動語音識別技術(ASR)對語音碼的識別率,增強了語音驗證碼的抗攻擊性.合成的語音驗證碼的人耳識別率達到了90%左右,ASR的識別率為28.8%,語音碼的可懂度和清晰度達到了滿意的效果[4].

1.1.3基于多形變特征的漢字驗證碼

運用Java Beans技術,隨機產生漢字字符,同時將漢字字符進行形變和粘連處理,生成的驗證碼具有很強的可用性.這種驗證碼具有更高的安全性,能有效地加強攻擊者對此進行破解的難度,易于用戶使用[5].

1.1.4動態驗證碼技術

動態驗證碼是指驗證碼系統給驗證者呈現一個交互過程,通過交互過程動態地驗證驗證者的一種驗證碼.例如,驗證碼系統先隨機產生X=10,Y=20,Z=30,讓驗證者確認后,再隨機地產生一個表達式(X+Y)×Z,要求驗證者回答該表達式的值.再例如,驗證碼的本質是區別人和計算機,因此,可以設計基于用戶行為方式的驗證碼;也可在用戶界面上顯示一個動態隨機變化位置的信息,要求用戶點擊該信息等方式[6].

1.2識別技術最新現狀

針對一般的數字字母組合的驗證碼,使用基于粗匹配的序貫相似性檢測匹配算法,驗證碼破解成功率可以達到85%,平均破解一張數字字母組合的驗證碼圖片所需的時間為3.5S,遠優于同類算法[7].針對粘連扭曲字符驗證碼識別方法.首先通過DENSE SIFT特征匹配獲得匹配點集,再通過RANSAC算法獲得匹配信息,最后采用隊列式分析算法得出識別結果[8].

2利用PHP作圖工具設計新型驗證碼

現階段的驗證碼在防破解的方面進行了很多有益的改進,筆者認為設計漢字驗證碼,從識別技術的根源上增加難度,同時不影響用戶的識別,可以更為有效地防止驗證碼被識別,也降低了設計成本.

驗證碼是隨機產生的字符串,由web服務器生成.服務器生成驗證碼后將字符串保存在回話Session中,同時發送給瀏覽器顯示.用戶將用戶名、密碼和驗證碼一并提交給服務器.服務器在驗證用戶名和密碼的過程中,同時比較用戶提交的驗證碼與Session中保存的驗證碼是否一致,如果一致,用戶登錄正常通過,否則返回到登錄界面[9].具體的原理如圖1所示.

圖1 驗證碼原理圖

2.1結合Session技術生成漢字驗證碼

Session技術屬于服務器端的技術,因此在設計開發驗證碼時,需要正確配置Apache服務器.然后利用配置文件的相關設置,將Apache與PHP 5.3.5進行綁定,搭建簡易的WEB開發環境.

遵循PHP中Session編程的語法規則,啟動Session文件,隨機生成驗證碼,然后將驗證碼存入到Session文件中,具體的代碼如下:

session_start();

header("Content-type:image/PNG");

getCode(4,150,50);

function getCode($num,$w,$h){

$w=$w;

$h=$h;

$fontface="STCAIYUN.TTF";

$str="阿啊哀唉挨哎埃矮藹愛礙艾隘安氨庵鞍岸按案暗俺骯昂凹熬襖傲奧拗澳懊(此處省略)";

$str=iconv('utf-8','gbk',$str);

$code="";

for($i=0;$i<$num;$i++){

$Xi=mt_rand(0,strlen($str)/2);

if($Xi%2)$Xi+=1;

$code.=substr($str,$Xi,2);

$_SESSION['code']=$code;

2.2背景干擾的設計

為了增加驗證碼的安全性,提高防識別能力,需要設計背景干擾.在漢字驗證碼圖片上,增加隨機個數隨機顏色的曲線和原點,注意在使用PHP繪圖函數之前,一定要檢驗GD庫是否加載成功,具體的設置在php. ini中查看.設計背景干擾的代碼如下:

$im=imagecreatetruecolor($w,$h);

$bkcolor=imagecolorallocate($im,250,250,250);

imagefill($im,0,0,$bkcolor);

for($i=0;$i<15;$i++){

$fontcolor=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));

imagearc($im,m t_rand(-10,$w),m t_rand(-10,$h),mt_rand(30,300),m t_rand(20,200),55,44,

$fontcolor);

for($i=0;$i<255;$i++){

$fontcolor=imagecolorallocate($im,mt_rand(0,255),m t_rand(0,255),m t_rand(0,255));

imagesetpixel($im,mt_rand(0,$w),mt_rand(0,$h),$fontcolor);

2.3漢字拉伸的設計

生成驗證碼的時候,主要利用imagettftext用TrueType字體向圖像寫入文本.寫入時,可以設置寫入文本的字體尺寸、字體旋轉的角度大小、字體的位置(XY坐標)以及字體的顏色等等,為了實現漢字拉伸的效果,將產生的隨機漢字驗證碼在不同旋轉角度進行輸出顯示,具體的代碼如下:

$im=imagecreatetruecolor($w,$h);

$bkcolor=imagecolorallocate($im,250,250,250);

imagefill($im,0,0,$bkcolor);

for($i=0;$i<4;$i++){

$fontcolor=imagecolorallocate($im,mt_rand(0,120),mt_rand(0,120),mt_rand(0,120));

$codex=iconv("GB2312","UTF-8",substr($code,$i*2,2));

$size=mt_rand(14,18);

$angle=mt_rand(-60,60);$x=30*$i+20;

$y=mt_rand(30,35);

imagettftext($im,$size,$angle,$x,$y,$fontcolor,$fontface,$codex);

imagettftext($im,$size,$angle+mt_rand(-5,5),$x,$y,$fontcolor,$fontface,$codex);

imagepng($im);

imagedestroy($im);

3驗證碼測試

利用編寫的代碼在搭建的Apache服務器中運行,如圖2所示,摘取運行得到的四張驗證碼圖像,從圖中可以看出,該驗證碼用戶體驗較好,在不影響用戶正常識別的基礎之上,增加了自動識別的難度,可以有效地提高驗證碼的可靠性和安全性.

圖2 生成的驗證碼圖像

4結論與展望

現代網絡世界中,不法分子利用黑客技術對各類網站進行破壞和干擾.利用驗證碼技術可以有效地防止登錄網站被惡意攻擊,提高網站的安全性.筆者設計的驗證碼滿足網站登錄界面的設計需求,在防識別方面優于其它驗證碼技術.

當然,單單利用驗證碼技術是遠遠不夠的,現在很多網站利用口令加密的方式[10],實現用戶密碼的加密,提高用戶信息的安全保障能力.本設計中,也可以利用PHP支持的MD5算法類進行加密處理,結合設計的漢字驗證碼,進一步提升網站的安全性.

[1]劉明明.基于Java web的中文驗證碼的設計與實現[J].消費電子,2014,(10):175-176.

[2]賈默然,高永兵.PHP圖片驗證碼的實現[J].包鋼科技,2010,(1):59-60.

[3]李建迎.基于FusionCharts的圖形驗證碼的研究與實現[J].計算機應用與軟件,2014,31(8):327-329.

[4]汪成亮,張玉維.基于共振峰合成和韻律調整的語音驗證碼方法研究[J].計算機應用研究,2011,28(7):2 458-2 461.

[5]戴如意,艾麗蓉,高海昌.基于多形變特征的漢字驗證碼的設計及實現[J].計算機應用研究,2010(4):1 508-1 510.

[6]王斌君,王靖亞,杜凱選,等.驗證碼技術的攻防對策研究[J].計算機應用研究,2013,30(9):2 776-2 779.

[7]高海昌,樊曄,王偉.利用旋轉歸一化和粗匹配算法破解驗證碼[J].西安電子科技大學學報,2012,39(6):78-83.

[8]尹龍,尹東,張榮,等.一種扭曲粘連字符驗證碼識別方法[J].模式識別與人工智能,2014,27(3):235-241.

[9]劉紅坤.使用PHP實現圖片驗證碼的方法[J].計算機時代,2011,(11):13-14.

[10]王振輝.一種安全登錄子系統的設計與實現[J].科學技術與工程,2012,20(22):5 624-5 629.

(責任編輯李健飛)

Key works:verification code;WEB development;PHP;network security

The Design of New Authentication Code Based on Technology of WEB Development

LIN Jia-zhe1,WANG Qian1,XIE Nan2
(1.Dept.of Aviation Ammunition;2.Dept.of No.Four Aviation Station,Air Force Logistics College,Xuzhou,Jiangsu 221000,China)

By using the WEB development technology,this paper designs a graphical verification code of the drawing characters to prevent illegal users'duplication of website by malicious code.Without affecting the user identification,the graphical verification is combined with some background interference. The Apache server running results show that the graphical verification code can effectively prevent illegal users'attack,improving the security of the network system.

TP393.08

A

1673-1972(2016)03-0038-04

2016-02-26

藺佳哲(1991-),男,河北張家口人,碩士研究生,主要從事機載彈藥技術維護研究.

猜你喜歡
語音漢字服務器
通信控制服務器(CCS)維護終端的設計與實現
魔力語音
基于MATLAB的語音信號處理
基于MQ3與MP3的價廉物美的酒駕語音提醒器
對方正在輸入……
漢字這樣記
漢字這樣記
中國服務器市場份額出爐
得形忘意的服務器標準
計算機網絡安全服務器入侵與防御
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合