手机版

ASP .网验证码(3种)

时间:2021-09-08 来源:互联网 编辑:宝哥软件园 浏览:

日常生活中我们在使用网站时都会遇到验证码,大家有没有想过为什么要使用验证码?

其实验证码的作用就是防止恶意破解密码、刷票、论坛灌水、刷页。有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试。今天就跟大家分享ASP .网的三种验证码。

1.GSC _网络控制图书馆这是在网上找到的一个控件,非常好用。但是效果不是特别好(见下图。)虽然容易使用,所有的属性都可以像控件一样设置,但是可用性不太高。用户不能自定义,而且看起来这个验证码效果不太好。

效果:

2.用一个页面生成图片,另一个页面调用,验证码存入饼干,调用时取甜饼干对比验证。这个用户就可以按自己的喜好更改效果和验证码的长度了。

效果如图:

CheckCode.aspx代码如下:

使用系统;使用系统。数据;使用系统。配置;使用系统。收藏品;使用系统网络.使用系统。网络安全;使用系统网络。用户界面使用系统。网络控件;使用系统。网页组件;使用系统网络。UI。HtmlControls使用系统。绘图;使用系统。绘图。绘图2D;使用系统。绘图。成像;公共分部类工具_检查代码:系统.网页{受保护的无效页面_加载(对象发送者,事件参数e){ 0此CreateCheckCodeImage(GenerateCheckCode());}私有字符串GenerateCheckCode(){ int number;字符代码;字符串检查代码=字符串。空的;系统随机=新的随机();for(int I=0;i5;i ) { number=random .next();if(number % 2==0)code=(char)(“0”(char)(number % 10));否则代码=(字符)(“A”(字符)(数字% 26));checkCode=代码. ToString();}回应饼干。添加(新的httpookie('校验码',校验码));返回checkCode}私有void CreateCheckCodeImage(字符串校验码){ if(校验码==null | |校验码.Trim()==字符串.空)返回;系统。绘图。位图图像=新系统。绘图。位图((整数)数学。天花板(((检查代码.长度* 12.5))、22);图形g=图形FromImage(图像);尝试{ //生成随机生成器Random Random=new Random();//清空图片背景色透明(颜色。白色);//画图片的背景噪音线for(int I=0;i 25i ) { int x1=random .下一张(图片。宽度);int x2=随机。下一张(图片。宽度);int y1=随机。下一张(图片。身高);int y2=随机。下一张(图片。身高);画线(新钢笔(颜色。绿色黄色)、x1、y1、x2、y2);}字体字体=新系统。图纸。字体(' Verdana ',12,(系统。绘图。字体样式。粗体|系统绘图。字体样式。斜体));系统。绘图。绘图2D .线性渐变画笔=新系统绘图。2d图纸。linegradientbrush(新矩形(0,0,图像。宽度,图像。高度)、颜色。蓝色,彩色暗红色,1.2f,真);g。拉绳(检查代码,字体,画笔,2,2);//画图片的前景噪音点for(int I=0;i 80i ) { int x=random .下一张(图片。宽度);int y=随机。下一张(图片。身高);图像。设置像素(x,y,颜色FromArgb(随机. next()));} //画图片的边框线画矩形(新钢笔(颜色。红色),0,0,图像。宽度- 1,图像。身高-1);系统。内存流=新系统IO。内存流();图像。保存(毫秒,系统绘图。成像。imageformat。gif);回应ClearContent();回应内容类型=' image/Gif ';回应二进制写入(ms . to array());}最后{ g . Dispose();图像dispose();} }}然后在需要使用的页面引用:UseCheckCode.aspx

img src=' Http : tools/CheckCOde。aspx ' alt='验证码style=' width: 60px高度: 24px' /3 .用网处理程序生成图片。这个其实和前面的意思大致差不多,调用方法也基本和2一样,不同的是,它的验证码是存入会议的。供学习参考。

效果图如下:

ValidateImageHandler.ashx

%@ WebHandler语言=' c# ' Class=' ValidateImageHandler ' %使用系统;使用系统网络.使用系统网络。会话状态使用系统。绘图;使用系统。绘图。成像;使用系统。文字;///摘要///ValidateImageHandler生成网站验证码功能////summarypublic类ValidateImageHandler : IHttpHandler,irequissessionstate { int intLength=5;//长度字符串striidentify=' Identify//随机字串存储键值,以便存储到会议中public ValidateImageHandler(){ }///summary//生成验证图片核心代码////summary///param name=' HC '/param public void process request(HttpContext HC){//设置输出流图片格式hc .响应。content type=' image/gif ';位图b=新位图(200,60);图形g=图形.来自IMage(b);填充矩形(新的SolidBrush(颜色. YellowGreen),0,0,200,60);字体=新字体(字体系列GenericSerif,48岁岁,FontStyle .粗体,图形单位。像素);Random r=new Random();//合法随机显示字符列表字符串strLetters=' abcdefghijklmnopqrstuvwxyzabbcdefghijklmnopqrstuvwxyz 1234567890 ';StringBuilder s=new StringBuilder();//将随机生成的字符串绘制到图片上for(int I=0;附加模式.子串(r.Next(0,strLetters .长度- 1),1));拉绳[长度- 1]。ToString(),字体,新的SolidBrush(颜色。蓝色),i * 38,r.Next(0,15));} //生成干扰线条钢笔钢笔=新钢笔(新SolidBrush(颜色。蓝色),2);for(int I=0;i 10i ) { g.DrawLine(pen,new Point(r.Next(0,199),r.Next(0,59)),new Point(r.Next(0,199),r.Next(0,59));保存。响应。输出流,图像格式. gif);hc .session[stri identify]=s . ToString();//先保存在会议中,验证与用户输入是否一致hc .响应。end();} ///摘要///表示此类实例是否可以被多个请求共用(重用可以提高性能)//////summary public bool IsReuse { get { return true;} }}以上就是ASP .NET3种验证码,各有各的优缺点,希望大家可以熟练实现不同验证码的功能。

版权声明:ASP .网验证码(3种)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。