亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Servlet的驗證碼設(shè)計與實現(xiàn)

        2018-11-15 01:33:54丁乙詩任云宏蘭全祥
        電腦知識與技術(shù) 2018年20期
        關(guān)鍵詞:干擾

        丁乙詩 任云宏 蘭全祥

        摘要:驗證碼能夠有效防止暴力破解、惡意灌水以及自動注冊等,在WEB開發(fā)中具有至關(guān)重要的作用。首先對Servlet技術(shù)進(jìn)行了簡介,其次按照MVC架構(gòu)模式對驗證碼的實現(xiàn)進(jìn)行了分析,并闡述了驗證碼的實現(xiàn)步驟。最后,重點講解了字符型驗證碼、中文驗證碼的設(shè)計原理及實現(xiàn),同時介紹了為驗證碼添加干擾的方法。

        關(guān)鍵詞:Servlet;驗證碼;干擾;網(wǎng)站開發(fā)

        中圖分類號:TP311.1 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)20-0025-02

        Design and Implementation of Verification Code Based on Servlet

        DING Yi-shi, REN Yun-hong, LAN Quan-xiang

        (Panzhihua University, Panzhihua 617000, China)

        Abstract: Verification code can effectively prevent brute force, spam and automatic registration. It plays an important role in WEB development. First, the Servlet technology is introduced. Secondly, the implementation of the verification code is analyzed Based on the MVC architecture mode, and the development steps of the verification code are described. Finally, the design principles and implementation of character and Chinese verification code are explained. This paper introduces the method of adding interference to the verification code.

        Key words: servlet; verification code; interference; website development

        1 背景

        驗證碼又稱為全自動區(qū)分計算機(jī)和人類的圖靈測試(CAPTCHA,Completely Automated Public Turing test to tell Computers and Humans Apart),是一種區(qū)分用戶是計算機(jī)還是人的公共全自動程序。它能有效防止某些惡意用戶對某些特定用戶或網(wǎng)站使用暴力破解等方式進(jìn)行的不斷的非法攻擊,如自動注冊、重復(fù)登錄、刷票、論壇灌水等[1]。

        驗證碼經(jīng)過長期的發(fā)展,已經(jīng)演變出了圖片驗證碼、知識型問題驗證碼、行為型驗證碼、短信驗證碼、信息校驗驗證碼,其中圖片驗證碼是設(shè)計難度較低且應(yīng)用最廣泛的驗證碼之一[2]。圖片驗證碼一般是由數(shù)字、英文以及中文組成,其位數(shù)一般為四位,位數(shù)越多,識別難度越大。

        2 Servlet技術(shù)簡介

        Servlet是用Java編寫的服務(wù)器端程序,主要功能在于交互式地訪問和修改數(shù)據(jù),并生成動態(tài)Web內(nèi)容。

        2.1 Servlet API

        Servle實現(xiàn)了javax.servlet.Servletr接口,在Servlet接口中定義了三個方法,分別為init方法、service方法和destroy方法。

        init()方法主要用于servlet容器創(chuàng)建servlet實例時進(jìn)行Servlet初始化;service()方法用于處理客戶端向服務(wù)器發(fā)出的請求,并對服務(wù)器的響應(yīng)進(jìn)行設(shè)置;destroy()方法用于在服務(wù)器停止時銷毀Servlet。

        2.2 Servelet的創(chuàng)建與配置

        Servlet的創(chuàng)建實質(zhì)上是創(chuàng)建一個繼承了HttpServlet類的Java類,創(chuàng)建時應(yīng)遵循命名規(guī)范(類名首字母大寫)。

        在Tomcat6.0之后,Servlet可以通過注解進(jìn)行配置,具體配置為:@WebServlet(urlPatterns = {" urlPatterns "}),其中urlPatterns屬性用于指定servlet的映射路徑。

        3 驗證碼設(shè)計

        一般情況下,WEB開發(fā)都是按照MVC三層結(jié)構(gòu)進(jìn)行設(shè)計的,因此筆者從視圖層、控制層、模型層分別對驗證碼的設(shè)計和實現(xiàn)進(jìn)行闡述。

        3.1 視圖層

        視圖層主要用于顯示驗證碼和用戶輸入驗證碼。在視圖層需編寫驗證碼圖片代碼:

        title="點擊刷新"

        onclick="checkCode()" id="imge"/>

        其中,ImgServlet為驗證碼的請求地址(控制層Servlet映射URL),當(dāng)驗證碼無法識別時,用戶可以點擊驗證碼進(jìn)行刷新,關(guān)鍵代碼如下:

        function checkCode(){

        imge.src = "ImgServlet?nocache="

        +new Date().getTime();

        }

        3.2 控制層

        控制層主要由Servlet技術(shù)來實現(xiàn),其主要用于接收視圖層發(fā)送的請求(生成驗證碼),并調(diào)用模型層進(jìn)行數(shù)據(jù)處理,再將結(jié)果(驗證碼圖片)響應(yīng)到視圖層。在控制層實現(xiàn)中需注意禁止圖片緩存并設(shè)置響應(yīng)類型為圖片。

        禁止緩存是為了確保驗證碼及時刷新,保證驗證碼的有效性,關(guān)鍵代碼如下:

        Response.setHeader("Pragma","No-cache");

        Response.setHeader("Cache-Control","No-cache");

        Response.setDateHeader("Expires","0");

        由于請求的數(shù)據(jù)是圖片,因此需設(shè)置響應(yīng)內(nèi)容類型,關(guān)鍵代碼如下:

        Response.setContentType("image/jpeg");

        除上述步驟外,控制層還需調(diào)用模型層生成驗證碼的方法,并將正確的驗證碼字符保存到session中,然后將生成的驗證碼圖片響應(yīng)到視圖層。

        3.3 模型層

        模型層是實現(xiàn)驗證碼生成的java類。在這個類中主要通過隨機(jī)數(shù)生成器(Random)產(chǎn)生正確的驗證碼字符,并使用GDI+(Graphics Device Interface plus,圖形設(shè)備接口)技術(shù)來實現(xiàn)驗證碼的繪制[3]。

        4 驗證碼設(shè)計與實現(xiàn)

        4.1 字符驗證碼

        字符驗證碼一般包含英文和數(shù)字,這種驗證碼實現(xiàn)簡單、快速,但是識別難度低,容易被破解。字符驗證碼的設(shè)計和實現(xiàn)步驟如下:

        1)初始化驗證碼字符串

        String ctmp = "";

        2)將待選字符存入數(shù)組

        char [] char = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();

        3)從數(shù)組中隨機(jī)選取n個字符

        Random random = new Random();

        for(int i = 0; i

        int index=random.nextInt(char.length);

        ctmp += char[index];}

        4)將驗證碼繪制在圖片上

        graphics.drawString(code, x, y);

        其中,graphics為驗證碼圖片的畫筆,code為正確驗證碼字符,x和y是繪制驗證碼的坐標(biāo)。生成的驗證碼示例圖如圖1所示。

        4.2 中文驗證碼

        由于字符型驗證碼識別難度較低,為了提高驗證碼的識別難度,在生成驗證碼時可以選擇繪制中文字符。GB2312編碼規(guī)定漢字由四個區(qū)位碼組成,其中漢字編碼范圍為B0A1—F7FE,且從區(qū)位D7開始以后的漢字都是和很難見到的繁雜漢字(不適用于生成驗證碼),因此驗證碼所選范圍為B0A1—D7FE[4]。又因為區(qū)位碼表每區(qū)的第一個位置和最后一個位置為空,因此??A0和??FF不可?。ㄈ鏐1區(qū)的B1A0和B1FF不可?。?。中文驗證碼生成流程圖如圖3所示。

        1)初始化驗證碼字符串

        String ctmp="";

        2)初始化區(qū)位碼數(shù)組

        String []rbase = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","d","e","f"};

        3)隨機(jī)生成n個漢字

        Random random = new Random();

        for(int i=0; i

        //生成第一位區(qū)碼

        int r1 = random.nextInt(3)+11;

        String str_r1 = rbase[r1];

        //根據(jù)第一位區(qū)碼生成第二位區(qū)碼

        int r2;

        if(r1==13){ r2 = random.nextInt(7);

        }else{r2 = random.nextInt(16);}

        String str_r2 = rbase[r2];

        //生成第一位位碼

        int r3 = random.nextInt(6)+10;

        String str_r3 = rbase[r3];

        //根據(jù)第一位位碼生成第二位位碼

        int r4;

        if(r3==10){r4 = random.nextInt(15)+1;

        }else if(r3==15){r4 = random.nextInt(15);

        }else{r4 = random.nextInt(16);}

        String str_r4 = rbase[r4];

        //將四位區(qū)位碼轉(zhuǎn)為字節(jié)數(shù)組

        byte[] bytes = new byte[2];

        String str_r12 = str_r1+str_r2;

        int tempLow = Integer.parseInt(str_r12,16);

        bytes[0] = (byte)tempLow;

        String str_r34 = str_r3+str_r4;

        int tempHigh = Integer.parseInt(str_r34,16);

        bytes[1] = (byte)tempHigh;

        //根據(jù)字節(jié)數(shù)組生成漢字

        code = new String(bytes);

        ctmp+=code;

        }

        4)將驗證碼繪制在圖片上

        graphics.drawString(ctmp, x, y);

        生成的驗證碼示例圖片如圖2所示:

        4.3 添加干擾

        為了增加識別難度,可以在驗證碼圖片上添加干擾,如隨機(jī)線、隨機(jī)顏色、隨機(jī)縮放拉伸、背景干擾、旋轉(zhuǎn)隨機(jī)角度等[5]。

        1)添加隨機(jī)干擾線

        int n = random.nextInt(15)+20;

        //隨機(jī)生成20-35條干擾線;

        for (int i = 0; i

        //隨機(jī)生成干擾線的起點和終點

        int xstart = (int)(Math.random() * width); int ystart = (int)(Math.random() * height);

        int xend = (int)(Math.random() * width); int yend = (int)(Math.random() * height);

        g.drawLine(xstart, ystart, xend, yend); }

        2)縮放和隨機(jī)旋轉(zhuǎn)

        Graphics2D g2d = (Graphics2D) g;

        AffineTransform trans=new AffineTransform();

        trans.rotate(random.nextInt(45) * Math.PI / 180, anchorx, anchory);

        float scaleSize = random.nextFloat() +0.8f;

        if (scaleSize > 1f) scaleSize = 1f;

        trans.scale(scaleSize, scaleSize);

        g2d.setTransform(trans);

        添加隨機(jī)干擾線之后的驗證碼實例如圖3所示:

        5 結(jié)束語

        驗證碼能夠有效防止自動注冊、暴力破解(重復(fù)登錄嘗試)、惡意灌水等行為。該文介紹了基于Servlet的驗證碼生成技術(shù),講解了最廣泛使用的基于數(shù)字與英文字母的驗證碼以及破解難度大和安全性高的中文驗證碼。為了提高驗證碼的識別難度,還介紹了添加干擾的方法。驗證碼作為網(wǎng)絡(luò)服務(wù)的一種標(biāo)準(zhǔn)安全保障已被廣泛使用,其實現(xiàn)技術(shù)也是開發(fā)人員必須要掌握的技能之一。

        參考文獻(xiàn):

        [1] 龔莎. 網(wǎng)頁驗證碼技術(shù)綜述[J]. 信息與電腦: 理論版, 2014(2): 143-144.

        [2] 張立新. 多種類型驗證碼的研究與分析[J]. 福建電腦, 2016, 32(10): 76, 125.

        [3] 李軍, 連俊光. 基于GDI+的Web端頁面驗證碼繪制[J]. 電腦知識與技術(shù), 2018, 14(3): 72-73.

        [4] 李凱勝. 中文驗證碼識別技術(shù)研究[D]. 西安: 西安電子科技大學(xué), 2014.

        [5] 藺佳哲, 王茜, 謝楠. 基于WEB開發(fā)技術(shù)的新型驗證碼的設(shè)計研究[J]. 石家莊學(xué)院學(xué)報,2016, 18(3): 38-41.

        猜你喜歡
        干擾
        “TD-LTE與其他系統(tǒng)間干擾問題”的實踐測試
        蜂窩網(wǎng)絡(luò)終端直通通信功率控制研究
        民用航空導(dǎo)航信號的干擾研究
        大顆粒尿素水分測定干擾原因分析與處理
        科技傳播(2016年19期)2016-12-27 16:08:31
        乙肝治療別被干擾素“干擾”
        大眾健康(2016年12期)2016-12-14 15:36:52
        乙肝治療康復(fù),警惕脂肪肝“干擾”
        基于PRB底噪統(tǒng)計的LTE干擾定位方法
        移動通信(2016年20期)2016-12-10 09:04:22
        科學(xué)處置調(diào)頻廣播信號對民航通信干擾實例
        2.4GHz WiFi及藍(lán)牙對ZigBee干擾分析
        科技視界(2016年14期)2016-06-08 12:55:41
        亚洲国产精品婷婷久久| 亚洲大片免费| 天堂视频一区二区免费在线观看| 中文字幕高清不卡视频二区| 欧美最猛黑人xxxx黑人猛交| 夜爽8888视频在线观看| 草莓视频在线观看无码免费| 天堂久久一区二区三区| 精品综合久久久久久888蜜芽| 国产成a人亚洲精v品无码性色| 久久久久久99精品| 中文字幕精品人妻丝袜| 久久精品国产亚洲av果冻传媒| 国产成人综合亚洲精品| 亚洲一区二区三区久久蜜桃| 久久精品人妻中文av| 午夜天堂精品久久久久| 免费黄色电影在线观看| 国产亚洲曝欧美不卡精品| 日韩精品中文字幕一区二区| 人人妻一区二区三区| 国产一级大片免费看| 精品国产97av一区二区三区| 我和隔壁的少妇人妻hd| 青青草原综合久久大伊人| 国产精品国产三级国产av创 | 久久精品国产亚洲av无码偷窥| 嗯啊哦快使劲呻吟高潮视频| 亚洲国产日韩欧美高清片a| 在线观看在线观看一区二区三区| 轻点好疼好大好爽视频| 99热这里只有精品国产99热门精品| 风韵丰满妇啪啪区老老熟女杏吧 | 亚洲熟女一区二区三区250p| 亚洲国产av精品一区二区蜜芽| 久久99国产伦精品免费| 中文字幕乱码在线婷婷| 精品视频一区二区三区在线观看| 亚洲熟妇无码av不卡在线播放| 国产三级伦理视频在线| 寂寞人妻渴望被中出中文字幕|