登陆算数验证码,后台验证,相对前台验证更安全

2024-04-06 06:08

本文主要是介绍登陆算数验证码,后台验证,相对前台验证更安全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前台:

    <div class="form-group verificationcode"><img style="width: 140px; vertical-align: middle;margin: auto;" /></div>$(".verificationcode img").on('click', function () {$(this).attr('src', '/RIPSP/Base/Account/GetVerificationImg?w=150&h=32&t=' + new Date());}).click();

后台:

        public object GetVerificationImg(int w, int h){string randomcode = GetVerificationCode();int randAngle = 30; //随机转动角度Bitmap map = new Bitmap(w, h);//创建图片背景Graphics graph = Graphics.FromImage(map);graph.Clear(Color.AliceBlue);//清除画面,填充背景graph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, map.Width - 1, map.Height - 1);//画一个边框//graph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//模式Random rand = new Random();//背景噪点生成Pen blackPen = new Pen(Color.LightGray, 0);for (int i = 0; i < 50; i++){int x = rand.Next(0, map.Width);int y = rand.Next(0, map.Height);graph.DrawRectangle(blackPen, x, y, 1, 1);}//验证码旋转,防止机器识别char[] chars = randomcode.ToCharArray();//拆散字符串成单字符数组//文字距中StringFormat format = new StringFormat(StringFormatFlags.NoClip);format.Alignment = StringAlignment.Center;format.LineAlignment = StringAlignment.Center;//定义颜色Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };//定义字体string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };int cindex = rand.Next(7);for (int i = 0; i < chars.Length; i++){int findex = rand.Next(5);Font f = new System.Drawing.Font(font[findex], 14, System.Drawing.FontStyle.Bold);//字体样式(参数2为字体大小)Brush b = new System.Drawing.SolidBrush(c[cindex]);Point dot = new Point(14, 14);//graph.DrawString(dot.X.ToString(),fontstyle,new SolidBrush(Color.Black),10,150);//测试X坐标显示间距的float angle = rand.Next(-randAngle, randAngle);//转动的度数graph.TranslateTransform(dot.X, dot.Y);//移动光标到指定位置graph.RotateTransform(angle);graph.DrawString(chars[i].ToString(), f, b, 1, 1, format);//graph.DrawString(chars[i].ToString(),fontstyle,new SolidBrush(Color.Blue),1,1,format);graph.RotateTransform(-angle);//转回去graph.TranslateTransform(-2, -dot.Y);//移动光标到指定位置,每个字符紧凑显示,避免被软件识别}//生成图片System.IO.MemoryStream ms = new System.IO.MemoryStream();map.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);HttpContext.Current.Response.ClearContent();HttpContext.Current.Response.ContentType = "image/gif";HttpContext.Current.Response.BinaryWrite(ms.ToArray());graph.Dispose();map.Dispose();return null;}private string GetVerificationCode(){Random rand = new Random();int a = rand.Next(1, 99);int b = rand.Next(1, 100 - a);int c = a + b;HttpContext.Current.Session["loginyzm"] = c.ToString();return string.Format("{0} 加 {1} =?", a, b);}

这篇关于登陆算数验证码,后台验证,相对前台验证更安全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/879190

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

SpringBoot如何集成Kaptcha验证码

《SpringBoot如何集成Kaptcha验证码》本文介绍了如何在Java开发中使用Kaptcha生成验证码的功能,包括在pom.xml中配置依赖、在系统公共配置类中添加配置、在控制器中添加生成验证... 目录SpringBoot集成Kaptcha验证码简介实现步骤1. 在 pom.XML 配置文件中2.

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提