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
安庆二中2015—2016学年度第二学期高一地理期中考试05-03
教师节学生演讲稿精编例文05-02
如何让作文有文采04-05
全国政协十一届四次会议贾庆林工作报告03-11
郑州大学现代远程教育《金工与生产实习》课程考核要求概要03-08
走进宋词教学材料03-08
2018-2023年中国农用塑料薄膜行业市场深度调研分析与投资机会研究趋势预测(目录)09-26
主成分分析在选拔竞赛队员中的应用03-12
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 彩色
- 验证
- 制作
- ASP
- NET
- 2.0