ASP.NET 2.0 制作彩色验证码
更新时间:2024-04-15 23:32:01 阅读量: 综合文库 文档下载
- asp.net core推荐度:
- 相关推荐
一、ASP.Net的验证码的作用
对于一个预防攻击的web表单来讲,验证码通常是一个常见的措施。因为如果对于一些public区域的页面内容来讲,譬如一个登录表单,如果没有必要的安全措施,很可能遭到模拟登录的暴力破解攻击,要么轻易获得特定账户的登录信息,要么给服务器增加了大量的负荷,影响正常的服务。解决的办法,一般就是在登录前给出一个随机的信息(验证码),显示在页面上,让用户填写,以确保用户是通过web页面来进行正常的登入,对于非法的非web途径登录者会看不到这个验证码从而拒绝其登录。虽然这样,往往很多攻击者会截获登录web页,从而也搜索出验证码,这样,验证保护措施也失去意义,一般情况下,我们可以通过将验证信息作为图像信息显示在web上,这样就既可以不阻碍合法用户登录,又使非法攻击者无法通过html搜索获得验证信息。这大抵上就是验证码的用途和意义了。
二、ASP.Net的验证码实现
一般传统的验证码图像一般采用一些CGI、ISAPI程序加上一些加密代码来动态生成图像,ASP大多采用COM组件实现,相当辛苦。
ASP.Net中欲实现动态验证码却相当容易,实例解说
重点列出viewImg.aspx,前台没有任何代码,在后台中需要添加以下代码: //导入所需要的包 using System.Drawing;
using System.Drawing.Imaging; using System.IO;
//然后在Load事件中添加以下代码
protected void Page_Load(object sender, EventArgs e) {
string chkCode = string.Empty;
//颜色列表,用于验证码、噪线、噪点
Color[] color ={ Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange,
Color.Brown, Color.DarkBlue };
//字体列表,用于验证码
string[] font ={ \
\
//验证码的字符集,去掉了一些容易混淆的字符
char[] character ={ ''2'', ''3'', ''4'', ''5'', ''6'', ''8'', ''9'', ''A'', ''B'', ''C'', ''D'', ''E'',
''F'', ''G'', ''H'', ''J'', ''K'', ''L'', ''M'', ''N'', ''P'', ''R'', ''S'', ''T'', ''W'', ''X'', ''Y'' };
Random rnd = new Random();
//生成验证码字符串 for (int i = 0; i < 4; i++) {
chkCode += character[rnd.Next(character.Length)]; }
//保存验证码的Cookie
HttpCookie anycookie = new HttpCookie(\
anycookie.Values.Add(\
HttpContext.Current.Response.Cookies[\
chkCode;
Bitmap bmp = new Bitmap(150, 30);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
//画噪线
for (int i = 0; i < 5; i++) {
int x1 = rnd.Next(150); int y1 = rnd.Next(30); int x2 = rnd.Next(150); int y2 = rnd.Next(30);
Color clr = color[rnd.Next(color.Length)]; g.DrawLine(new Pen(clr), x1, y1, x2, y2); }
//画验证码字符串
for (int i = 0; i < chkCode.Length; i++) {
string fnt = font[rnd.Next(font.Length)]; Font ft = new Font(fnt, 16);
Color clr = color[rnd.Next(color.Length)];
g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 20 +
20, (float)6); }
//画噪点
for (int i = 0; i < 100; i++) {
int x = rnd.Next(bmp.Width); int y = rnd.Next(bmp.Height);
Color clr = color[rnd.Next(color.Length)]; bmp.SetPixel(x, y, clr); }
//清除该页输出缓存,设置该页无缓存 Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddMilliseconds(0);
Response.Expires = 0;
Response.CacheControl = \
Response.AppendHeader(\
//将验证码图片写入内存流,并将其以\格式输出 MemoryStream ms = new MemoryStream();
try {
bmp.Save(ms, ImageFormat.Png); Response.ClearContent();
Response.ContentType = \ Response.BinaryWrite(ms.ToArray()); }
finally {
//显式释放资源 bmp.Dispose(); g.Dispose(); } }
添加完成后,该页面就可以生成一个彩色验证码
在需要验证的页面只需要在代码中加入
在验证时可用Request.Cookies[\获取该值进行验证。
文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/200819/96140_2.html
正在阅读:
ASP.NET 2.0 制作彩色验证码04-15
记叙文《将军》阅读答案03-29
音乐评课稿-《时间像小马车》评课稿04-19
棋社的发展方向及学期计划01-30
自我评价300字左右10篇07-30
部编版九年级语文上册第2课我爱这土地教案03-27
初中语文《秋天的怀念》试讲稿/教案设计03-27
《国际商务谈判》复习题05-15
处理民族关系的原则 教学设计06-09
- 《江苏省环境水质(地表水)自动监测预警系统运行管理办法(试行)》
- 安乐死合法化辩论赛立论稿(浙大新生赛)
- 公共科目模拟试卷公务员考试资料
- 我国固定资产投资FAI对GDP的影响
- 大学生创新创业训练计划项目申请书大创项目申报表
- 完美版—单片机控制步进电机
- 2013资阳中考化学试题
- 18.两位数减一位数退位(397道)
- 工程量计算规则
- 二年级操行评语(下)
- 第3章 流程控制语句
- 浅基桥墩加固技术
- 课题研究的主要方法
- 5100软件说明书 - 图文
- 车间技术员年终总结
- 关于印发《中铁建工集团开展项目管理实验室活动方案》的通知
- 经典诵读结题报告
- 地下水动力学习题答案
- 2018年全国各地高考数学模拟试题平面解析几何试题汇编(含答案解
- 街道办事处主任2018年度述职述廉报告
- 彩色
- 验证
- 制作
- ASP
- NET
- 2.0