ASP.NET验证码(3种)
把最近碰到的 能够用的验证码 都放出来,作个记录
1.GSC_WebControlLibrary 这是在网上找到的一个控件,非常好用。但是效果不是特别好(见下图。
)虽然容易使用,所有的属性都可以像控件一样设置,但是可用性不太高。用户不能自定义,而且看起来这个验证码效果不太好。
效果:
2.用一个页面生成图片,另一个页面调用,验证码存入cookie,调用时取cookie对比验证.这个用户就可以按自己的喜好更改效果和验证码的长度了 (:
效果如图:

代码如下:
CheckCode.aspx
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
public partial class Tools_CheckCode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.CreateCheckCodeImage(GenerateCheckCode());
}
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;
System.Random random = new Random();
for (int i = 0; i < 5; i++)
{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString();
}
Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
return checkCode;
}
private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
return;
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for (int i = 0; i < 25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.GreenYellow), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Verdana", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, font, brush, 2, 2);
//画图片的前景噪音点
for (int i = 0; i < 80; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框线
g.DrawRectangle(new Pen(Color.Red), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
}
然后在需要使用的页面引用:
UseCheckCode.aspx
<img src="Tools/CheckCode.aspx" alt="验证码" style="width: 60px; height: 24px" />
3.用web handler生成图片。这个其实和前面的意思大致差不多,调用方法也基本和2一样,不同的是,他的验证码是存入Session的。供学习参考。
效果图如下:
ValidateImageHandler.ashx
%@ WebHandler Language="C#" Class="ValidateImageHandler" %>
using System;
using System.Web;
using System.Web.SessionState;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
/**//// <summary>
/// ValidateImageHandler 生成网站验证码功能
/// </summary>
public class ValidateImageHandler : IHttpHandler, IRequiresSessionState
{
int intLength = 5; //长度
string strIdentify = "Identify"; //随机字串存储键值,以便存储到Session中
public ValidateImageHandler()
{
}
/**//// <summary>
/// 生成验证图片核心代码
/// </summary>
/// <param name="hc"></param>
public void ProcessRequest(HttpContext hc)
{
//设置输出流图片格式
hc.Response.ContentType = "image/gif";
Bitmap b = new Bitmap(200, 60);
Graphics g = Graphics.FromImage(b);
g.FillRectangle(new SolidBrush(Color.YellowGreen), 0, 0, 200, 60);
Font font = new Font(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel);
Random r = new Random();
//合法随机显示字符列表
string strLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
StringBuilder s = new StringBuilder();
//将随机生成的字符串绘制到图片上
for (int i = 0; i < intLength; i++)
{
s.Append(strLetters.Substring(r.Next(0, strLetters.Length - 1), 1));
g.DrawString(s[s.Length - 1].ToString(), font, new SolidBrush(Color.Blue), i * 38, r.Next(0, 15));
}
//生成干扰线条
Pen pen = new Pen(new SolidBrush(Color.Blue), 2);
for (int i = 0; i < 10; i++)
{
g.DrawLine(pen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59)));
}
b.Save(hc.Response.OutputStream, ImageFormat.Gif);
hc.Session[strIdentify] = s.ToString(); //先保存在Session中,验证与用户输入是否一致
hc.Response.End();
}
/**//// <summary>
/// 表示此类实例是否可以被多个请求共用(重用可以提高性能)
/// </summary>
public bool IsReusable
{
get
{
return true;
}
}
}
分享到:
相关推荐
在本篇文章中,我们将深入探讨Asp.net验证码控件的工作原理、类型以及如何在实际项目中应用。 **1. Asp.net验证码控件的原理** 验证码控件的主要目的是创建一个动态生成的、一次性使用的图像,其中包含随机的字母或...
ASP.NET验证码是微软ASP.NET框架中用于验证用户输入的有效性的一种机制,主要目的是防止自动化的机器人或恶意软件进行非法操作,如批量注册、恶意登录等。验证码通常涉及到图像生成、用户交互以及验证过程。 在ASP...
"ASP.NET 验证码实现详解" ASP.NET 验证码实现是 ASP.NET 编程中的一种常见技术,用于生成验证码图片,以防止恶意攻击和自动注册。下面将详细介绍 ASP.NET 验证码实现的知识点: 一、验证码生成 在 ASP.NET 中,...
ASP.NET验证码技术详解 在ASP.NET开发中,验证码(CAPTCHA)是一种常用的安全机制,用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、恶意登录等。验证码通过显示一组随机生成的图像或文本,要求用户...
asp.net 验证码实现代码 //确保生成的验证码是4位的,不是则重新产生 if(Session["code"].ToString().Trim().Length != 4) Session["code"] = RandNum(4); /// /// 生成图片并写入字符 /// /// 目标字符 //...
ASP.NET动态验证码是一种用于验证用户身份的安全机制,广泛应用于网页登录、注册和其他涉及用户交互的安全场景。它通过生成随机的图像和文字组合,要求用户在输入框中输入看到的字符,以此来防止自动化的机器人或者...
ASP.NET验证码是Web开发中一个重要的安全机制,用于防止自动化的机器人或恶意脚本进行非法操作,如批量注册、垃圾信息提交等。在ASP.NET框架中,验证码通常用于登录、注册和其他涉及用户输入的安全敏感页面。它通过...
在标题提到的"asp.net验证码ajax"场景中,我们讨论的是如何结合ASP.NET和Ajax来实现一个用户注册过程中的验证功能,具体包括检查用户名是否已存在以及使用验证码来防止机器人或恶意用户的自动化操作。 首先,验证码...
ASP.NET验证码实例是一种常见的安全措施,用于防止自动化脚本或机器人在网站上进行恶意操作,如注册、登录或提交表单。在这个实例中,我们关注的是如何创建一个可交互的验证码系统,允许用户通过鼠标点击或按钮点击...
波形扭曲彩色Asp.net验证码源码 波形扭曲彩色Asp.net验证码源码 波形扭曲彩色Asp.net验证码源码
ASP.NET 验证码控件及其好用【推荐】 网上寻的 一、控件特点: 1、使用方便,只需要从工具栏直接拖到页面即可自动验证,零代码使用。 2、自动完成客户端以及服务器的验证码验证,Ajax验证,随用户输入即时 验证...
3、可自定义验证码图片外观。 4、有水平方向垂直方向两种方式选择。 5、有数字、小写字母、大写字母三种及任意两种组合、三种组合字符选择。 6、兼容IE及FireFox。 二、使用说明。 1、属性。 IsMatch:指示用户输入...
总之,ASP.NET验证码控件是一种有效的安全机制,通过结合图像扭曲和Cookie/Session管理,可以在一定程度上防止自动程序的滥用。理解和掌握这种技术对于任何从事Web开发的人员都至关重要,特别是在构建用户交互频繁的...
ASP.NET验证码破解程序是一个针对基于ASP.NET平台的验证码安全性的研究项目,主要涉及的是Web开发中的安全性问题。验证码是防止自动机器人或者恶意攻击者进行非法操作的重要防护手段,例如防止批量注册、垃圾评论等...
ASP.NET验证码程序是一种用于验证用户身份的安全机制,通常在网页表单提交时使用,以防止自动化的机器人或恶意脚本进行非法操作。该程序包含源代码,允许开发者根据实际需求进行自定义和调整,适用于B/S(Browser/...
首先,我们要了解ASP.NET验证码的基本原理。验证码通常由服务器生成一个随机的字符串或图像,并将其存储在服务器端的会话(Session)中。客户端在页面加载时显示这个验证码,用户输入后,服务器会比较用户输入与存储...
语音验证码源码、简单实现一个复杂的验证码、简单的验证码实例(全部源代码)讲解很清楚、51aspx无刷新仿google波形扭曲彩色Asp.net验证码、51gdi、validCode_51aspx、ChineseVerifyCode、Asp.net简单验证码源码
只要打开.NET 然后再工具箱内右键--》选择项--》浏览--》找到这里bin目录下的ZYDF.IMGCODE.dll文件 添加进工具箱后,直接拉到页面里就可以用了。 去的验证码的值this.IMGCODE1.Text 采用的是ajax无刷新技术。
【ASP.NET编程知识】ASP.NET验证码(3种).docx