999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

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

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

一、引言

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

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

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

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

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

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

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

private string CreateCheckCodeString()

{ //定義用于驗(yàn)證碼的字符數(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'};

//定義驗(yàn)證碼字符串

string randomcode = \"\";

Random rd = new Random();

//生成4位驗(yàn)證碼字符串

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)生的驗(yàn)證碼來繪制圖片,完整的實(shí)現(xiàn)過程如下:

//生成驗(yà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);

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

Random rand = new Random();

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

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

{

//定義起點(diǎn)

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

//定義終點(diǎn)

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

//繪制直線

graphics.DrawLine(pen1, p1, p2);

}

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

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

{

//定義起點(diǎn)

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

//定義終點(diǎn)

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

//繪制直線

graphics.DrawLine(pen2, p1, p2);

}

//繪制驗(yàn)證碼文字

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

//保存圖片為gif格式

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

//釋放對象

graphics.Dispose();

BitImage.Dispose();

}

(2)驗(yàn)證碼的使用

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

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

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

protected void DL_Click(object sender, EventArgs e)

{

//讀取Session會話中存儲的驗(yàn)證碼

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

//讀取用戶輸入的驗(yàn)證碼

string textCode = code.Text.Trim();

//對比驗(yàn)證碼

if (sessionCode == textCode)

{

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

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

}

else

{

//驗(yàn)證碼錯誤,提示用戶重新輸入

message.Text = \"驗(yàn)證碼錯誤,請重新輸入!\";

}

}

參考文獻(xiàn):

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

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

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

主站蜘蛛池模板: 国产精品视频白浆免费视频| 91在线激情在线观看| 欧美高清三区| 粗大猛烈进出高潮视频无码| 婷婷色丁香综合激情| 国产在线八区| 尤物视频一区| 最新无码专区超级碰碰碰| 国产精品一老牛影视频| 她的性爱视频| 久久久黄色片| 国产视频只有无码精品| 欧美视频在线播放观看免费福利资源| 岛国精品一区免费视频在线观看 | 999精品视频在线| 久久精品欧美一区二区| 91精品综合| 欧美精品H在线播放| 久久中文无码精品| 久操中文在线| 亚洲国产清纯| 亚洲永久视频| 亚洲a级在线观看| 亚洲成人动漫在线观看| 亚洲日本中文综合在线| 国产色伊人| 国产色偷丝袜婷婷无码麻豆制服| 亚洲一区二区无码视频| 精品三级网站| 亚洲黄色高清| 日本AⅤ精品一区二区三区日| 国产欧美日韩va另类在线播放| 国产精品丝袜在线| 免费高清自慰一区二区三区| 精品日韩亚洲欧美高清a| 午夜啪啪网| 国产成人你懂的在线观看| 热这里只有精品国产热门精品| 福利小视频在线播放| 亚洲高清无在码在线无弹窗| 亚洲第一视频免费在线| 国产成人高清精品免费| 国产成年女人特黄特色大片免费| 日本在线国产| 国产丝袜啪啪| 国产亚洲欧美日韩在线观看一区二区| 国产精品嫩草影院av| 露脸真实国语乱在线观看| 国产嫖妓91东北老熟女久久一| 91精品久久久久久无码人妻| 久久久无码人妻精品无码| 99热这里只有精品在线观看| 日本黄网在线观看| 亚洲无码精彩视频在线观看| 国产成人1024精品下载| 欧美自慰一级看片免费| 99免费在线观看视频| 欧美在线免费| 亚洲欧美色中文字幕| 亚洲中文字幕无码mv| 久久久久免费看成人影片 | 漂亮人妻被中出中文字幕久久| 久久婷婷国产综合尤物精品| 色婷婷电影网| 人妻丰满熟妇AV无码区| 国产日本欧美在线观看| 久久精品人妻中文系列| 国产69精品久久久久孕妇大杂乱 | 国产伦片中文免费观看| 亚洲床戏一区| 国产一级毛片网站| 丁香六月激情综合| 国产欧美日韩视频一区二区三区| 特级精品毛片免费观看| 东京热一区二区三区无码视频| 亚洲欧州色色免费AV| 亚洲天堂免费在线视频| 毛片三级在线观看| 亚洲日韩精品综合在线一区二区| 大陆国产精品视频| 国产成人在线小视频| 91精品人妻一区二区|