ASP.NET 2.0 制作彩色验证码
更新时间:2024-01-25 17:27:01 阅读量: 教育文库 文档下载
- web前端三大主流框架推荐度:
- 相关推荐
一、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 制作彩色验证码01-25
保证高考英语作文19分以上技巧强烈推荐07-25
数据结构习题集答案(C语言版严蔚敏)04-06
MissionPlanner地面站操作使用文档 - 图文11-25
中学地理经典教学案例 - 图文01-05
一个特点鲜明的人作文300字07-11
散装饲料运输车市场发展前景及投资可行性分析报告(2022-2026年)04-06
走进最可爱的人作文500字06-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 彩色
- 验证
- 制作
- ASP
- NET
- 2.0
- 江西省科学技术进步奖推荐书
- 经典图论算法(good)
- 虚拟仪器及其应用练习题
- 4 - 英国邦斯菲尔德油库爆炸事故调查总结报告 - 图文
- 2013-14《液压与气压传动》期末试卷
- 如东县城市生活垃圾(飞灰)无害化处置场(应急填埋库区)三期工程施工组织设计
- 2018-2024年中国航空运输市场现状调查与未来发展趋势报告目录
- 浅谈分布式发电
- 岩溶隧道研究
- 2015互联网监管笔记
- 无所为而为从儒家心性之学到中国现代美学 - 冯学勤
- 备战2013高考地理6年经典题精解精析 专题3 地球上的水(学生版)
- 华北水利水电学院目录
- 2017版高考英语一轮复习 Module 5 The Great Sports Personality 外研版必修5
- 学校发展存在的问题及对策
- 扎实开展党风廉政建设突出问题集中专项整治活动
- 日语敬语用法详解(有表格)、原创、推荐、新鲜
- 上海高考英语翻译精华100题中文
- 福建省电力有限公司关于加强10千伏业扩工程竣工检验管理的通知(闽电运检〔2013〕307号)
- 传感器与检测技术试卷及答案 - 图文