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

        ?

        ASP.NET網(wǎng)站中驗證碼技術(shù)的研究

        2010-12-31 00:00:00
        商場現(xiàn)代化 2010年13期

        [摘要]Web網(wǎng)站驗證用戶的合法性的傳統(tǒng)方法是要求用戶在客戶端輸入用戶名和密碼,一些別有用心的用戶利用機器人程序自動地進行登錄或者批量注冊,還可以通過像窮舉密碼破解和字典密碼破解之類的攻擊方法來自動探測合法的用戶名和密碼。驗證碼技術(shù)正是為了防止機器人程序此類攻擊而提出的,目前大部分的網(wǎng)站在用戶登錄和注冊時都采用了驗證碼技術(shù)。

        [關鍵詞]網(wǎng)站安全 驗證碼 驗證碼技術(shù)

        一、引言

        進入信息時代以后,隨著網(wǎng)絡的普及和網(wǎng)絡應用的增加,越來越多的組織開始通過網(wǎng)站這一平臺來進行信息的發(fā)布與交流。與此同時,隨著網(wǎng)絡攻擊技術(shù)的不斷發(fā)展,網(wǎng)站的安全面臨著越來越多的威脅。此外,由于系統(tǒng)漏洞和網(wǎng)站管理制度不完善等方面的原因,要保證網(wǎng)站的安全性并非一朝一夕的事。

        二、驗證碼技術(shù)的實現(xiàn)

        1. 驗證碼技術(shù)簡介

        Web網(wǎng)站驗證用戶的合法性的傳統(tǒng)方法是要求用戶在客戶端輸入用戶名和密碼,提交到服務器端后再確認其合法性,但是一些別有用心的用戶利用機器人程序自動地進行登錄或者批量注冊,還可以通過像窮舉密碼破解和字典密碼破解之類的攻擊方法來自動探測合法的用戶名和密碼,從而對網(wǎng)站安全造成了極大的威脅,也大大降低了網(wǎng)站響應速度[1]。驗證碼技術(shù)正是為了防止機器人程序此類攻擊而提出的,目前大部分的網(wǎng)站在用戶登錄和注冊時都采用了驗證碼技術(shù),也就是在用戶提交表單時需要輸入由服務器隨機生成的一段字符。由于驗證碼是隨機產(chǎn)生的字符串,每次請求都會發(fā)生變化,攻擊者很難猜測其具體內(nèi)容且無法窮舉,模擬表單提交時便很難正確填寫并通過驗證,這樣就實現(xiàn)了阻擋攻擊的目的。

        2. ASP.NET下驗證碼技術(shù)的實現(xiàn)

        (1)在實現(xiàn)驗證碼時,本文例子使用了專門的頁面創(chuàng)建驗證碼,產(chǎn)生驗證碼的頁面文件名為CreateCheckCode.aspx,由于實現(xiàn)驗證碼的過程利用了繪圖功能,需要在程序中添加ASP.NET用于繪圖的命名空間,即using System.Drawing。在實現(xiàn)驗證碼時本例首先創(chuàng)建了一個用于產(chǎn)生隨機驗證碼的方法CreateCheckCodeString(),然后在Page_Load(object sender, EventArgs e)事件中根據(jù)隨機產(chǎn)生的驗證碼來繪制圖片。

        在CreateCheckCodeString()方法中,首先定義了用于驗證碼的字符數(shù)組AllCheckCodeArray,接著根據(jù)Random()函數(shù)產(chǎn)生的隨機數(shù)來從字符數(shù)組中提取用于繪制驗證碼圖片的四位隨機字符。產(chǎn)生的驗證碼可以用Session會話存儲,也可以用Cookie存儲,由于有些用戶會禁用Cookie,因此本例中采用了Session會話來存儲隨機產(chǎn)生的驗證碼字符,用于與用戶輸入的字符進行比較。CreateCheckCodeString()的完整實現(xiàn)過程如下:

        private string CreateCheckCodeString()

        { //定義用于驗證碼的字符數(shù)組

        char[] AllCheckCodeArray ={ '0','1','2','3','4','5','6','7','8','9','A','B','C',

        'D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W',

        'X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',

        'r','s','t','u','v','w','x','y','z'};

        //定義驗證碼字符串

        string randomcode = \"\";

        Random rd = new Random();

        //生成4位驗證碼字符串

        for (int i = 0; i < 4; i++)

        {

        randomcode += AllCheckCodeArray[rd.Next(AllCheckCodeArray.Length)];

        }

        Session[\"code\"] = randomcode;

        return randomcode;

        }

        在Page_Load(object sender, EventArgs e)事件中根據(jù)CreateCheckCodeString()方法產(chǎn)生的驗證碼來繪制圖片,完整的實現(xiàn)過程如下:

        //生成驗證碼圖片

        protected void Page_Load(object sender, EventArgs e)

        {

        //定義圖片的寬度

        int ImageWidth = 55;

        //定義圖片高度

        int ImageHeigh = 22;

        //定義字體,用于繪制文字

        Font font = new Font(\"Arial\", 12, FontStyle.Bold);

        //定義畫筆,用于繪制文字

        Brush brush = new SolidBrush(Color.Black);

        //定義鋼筆,用于繪制干擾線

        Pen pen1 = new Pen(Color.FromArgb(255, 100, 100), 0);

        Pen pen2 = new Pen(Color.FromArgb(255, 100, 100), 0);

        //創(chuàng)建一個圖像

        Bitmap BitImage = new Bitmap(ImageWidth, ImageHeigh);

        //從圖像獲取一個繪畫面

        Graphics graphics = Graphics.FromImage(BitImage);

        //清除整個繪圖畫面并用顏色填充

        graphics.Clear(ColorTranslator.FromHtml(\"#F0F0F0\"));

        //定義文字的繪制矩形區(qū)域

        RectangleF rect = new RectangleF(5, 2, ImageWidth, ImageHeigh);

        //定義一個隨機數(shù)對象,用于繪制干擾線

        Random rand = new Random();

        //生成兩條橫向的干擾線

        for (int i = 0; i < 2; i++)

        {

        //定義起點

        Point p1 = new Point(0, rand.Next(ImageHeigh));

        //定義終點

        Point p2 = new Point(ImageWidth, rand.Next(ImageHeigh));

        //繪制直線

        graphics.DrawLine(pen1, p1, p2);

        }

        //生成兩條縱向的干擾線

        for (int i = 0; i < 2; i++)

        {

        //定義起點

        Point p1 = new Point(rand.Next(ImageWidth), 0);

        //定義終點

        Point p2 = new Point(rand.Next(ImageWidth), ImageHeigh);

        //繪制直線

        graphics.DrawLine(pen2, p1, p2);

        }

        //繪制驗證碼文字

        graphics.DrawString(CreateCheckCodeString(), font, brush, rect);

        //保存圖片為gif格式

        BitImage.Save(Response.OutputStream, ImageFormat.Gif);

        //釋放對象

        graphics.Dispose();

        BitImage.Dispose();

        }

        (2)驗證碼的使用

        在登錄頁面中只需添加如下語句就可以使用該驗證碼。

        登錄頁面的效果如圖2-1所示。

        當用戶點擊“登陸”時,在后臺代碼中首先對用戶輸入的驗證碼與Session會話中存儲的驗證碼進行對比,如果正確則調(diào)用檢查用戶名和密碼的方法,反之則提示用戶重新輸入驗證碼。單擊“登陸”按鈕的完整事件代碼如下:

        protected void DL_Click(object sender, EventArgs e)

        {

        //讀取Session會話中存儲的驗證碼

        string sessionCode = Session[\"code\"].ToString();

        //讀取用戶輸入的驗證碼

        string textCode = code.Text.Trim();

        //對比驗證碼

        if (sessionCode == textCode)

        {

        //驗證碼正確,調(diào)用檢查用戶名和密碼的方法

        checkUser(nameTex.Text.Trim(), pwdTex.Text.Trim());

        }

        else

        {

        //驗證碼錯誤,提示用戶重新輸入

        message.Text = \"驗證碼錯誤,請重新輸入!\";

        }

        }

        參考文獻:

        [1] 韓玉民 . 驗證碼技術(shù)研究及基于ASP.NET的實現(xiàn)[J] . 開發(fā)案例. 2009.8

        [2] 劉明,陳治 . ASP.NET中動態(tài)生成驗證碼圖片的方法研究[J] . 信息技術(shù) . 2009(9)

        [3] David Litchfield,Chris Anley.The database hacker's handbook[M].Wiley Publishing Inc,2005

        曰本极品少妇videossexhd | 久久久久av无码免费网| 国语少妇高潮对白在线| 亚洲av日韩片在线观看| 在线观看免费视频发布白白色| 末成年人av一区二区| 国产成人亚洲精品青草天美 | 国产成人精品无码一区二区老年人 | 亚洲av无码久久精品蜜桃| 欧美日韩不卡中文字幕在线| 国产自产21区激情综合一区| 国产自拍在线观看视频 | 中文字幕一区二区三区精彩视频| 亚洲国产成人手机在线电影| 日本办公室三级在线看| 精品人妻一区二区三区浪人在线 | 亚洲午夜无码久久久久软件| 日本综合视频一区二区| 青青青爽在线视频观看| 久久精品国产一区二区电影| 国产成人自拍视频在线免费| 国产真实一区二区三区| 帮老师解开蕾丝奶罩吸乳网站| 黄色毛片在线看| 蜜桃视频高清在线观看| 国产精品女老熟女一区二区久久夜 | 奇米影视久久777中文字幕| 亚洲国产日韩精品综合| 亚洲av区,一区二区三区色婷婷| 久久久久久人妻一区精品| 亚洲AV无码资源在线观看 | av资源在线看免费观看| 国产一级黄色片一区二区| 丰满人妻一区二区三区免费视频| 六月丁香婷婷色狠狠久久| 亚洲专区在线观看第三页| 精品国产自在现线看久久| 狼人香蕉香蕉在线28 - 百度| 久久久亚洲经典视频| 少妇被躁到高潮和人狍大战| 妺妺窝人体色www看人体|