- 浏览: 50315 次
- 性别:
- 来自: 西安
最近访客 更多访客>>
最新评论
-
black.angel:
你用的FCK是什么版本的?
EXT中嵌入FCK Editor -
tmartin:
学习了 好东西
EXTJS如何通过JSON与服务器通信
给ASP.Net表单增加验证码
一、验证码
对于一个预防攻击的web表单来讲,验证码通常是一个常见的措施。因为如果对于一些public区域的页面内容来讲,譬如一个登录表单,如果没有必要的安全措施,很可能遭到模拟登录的暴力破解攻击,要么轻易获得特定账户的登录信息,要么给服务器增加了大量的负荷,影响正常的服务。解决的办法,一般就是在登录前给出一个随机的信息(验证码),显示在页面上,让用户填写,以确保用户是通过web页面来进行正常的登入,对于非法的非web途径登录者会看不到这个验证码从而拒绝其登录。虽然这样,往往很多攻击者会截获登录web页,从而也搜索出验证码,这样,验证保护措施也失去意义,一般情况下,我们可以通过将验证信息作为图像信息显示在web上,这样就既可以不阻碍合法用户登录,又使非法攻击者无法通过html搜索获得验证信息。这大抵上就是验证码的用途和意义了。
二、ASP.Net的验证码实现
一般传统的验证码图像一般采用一些CGI、ISAPI程序加上一些加密代码来动态生成图像,ASP大多采用COM组件实现,相当辛苦。
ASP.Net中欲实现动态验证码却相当容易,笔者大致的思路:
1、 了安全起见,一般存在于CGI程序的url中的验证码加密串最好不要出现在html表单中,而是采用session变量存储,这样验证码的校验会很容易。
2、 采用一个单独的aspx页面专门产生动态程序,要显示的图形验证码信息存在于session中,而一个系统中有可能存在多个表单,为满足整个系统要求可以在aspx后加一个确定的session key的名称,例如
<img src=”http://xxxx/Genimg/viewImg.aspx?sessionKeyName=abc”> 此处的abc就是登录页在第一次输出表单给客户端自动生成一个随机字符串存储在session中的key名称,在服务器端脚本中可以通过session(“abc”)获得生成的字符串(验证码)到底是多少,通过和用户在表单的验证码输入框中输入的内容比较来确定用户是否通过正常的ie浏览器来访问表单。
3、 在表单的第一次显示(get方法)时,生成一个随机数字符串,存入session(“abc”)中,同时将abc作为sessionKeyName的值加入到验证码图形显示生成程序viewImg.aspx的url串中。
4、 ViewImg.aspx分析sessionKeyName,获取session(“abc”)的具体值,利用GDI+产生内存图像,然后修改http header,按照content-type=images/png的格式输出二进制流,这样客户的浏览器会显示出一幅图像,图像表达的内容就是验证码。
5、 当用户填入验证码后,提交到表单验证程序,首先考察其中的验证码输入字段,发现不匹配session(“abc”)马上拒绝,甚至可以累计失败登录次数,乃至拒绝此IP连接,保护系统;匹配session中的存储值,可以进行进一步的其他处理(譬如登录处理,文章发表等),当然也注意销毁此session变量(如果以后不需要)。
6、 不同的表单,可以分配不同的session变量名,这样一个ViewImg.aspx可以为系统多个表单服务。
三、实例解说
重点列出viewImg.aspx吧,具体看清单:
Imports System.IO
Public Class viewImg
Inherits System.Web.UI.Page
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim img As Bitmap
Dim gdiobj As Graphics
Dim ms As MemoryStream "--内存流,存放动态图形内存印象
Dim vfycode As String "--验证码
Dim SessionKeyname As String
If (Request("SessionKeyName") <> "") Then
SessionKeyname = Request("SessionKeyName")
If (Session(SessionKeyname) <> "") Then
vfycode = Session(SessionKeyname)
Else
vfycode = ""
End If
img = New Bitmap(32, 16) "--这个宽高可以根据需要确定
gdiobj = Graphics.FromImage(img)
gdiobj.DrawString(vfycode, (New Font("Arial", 9)), (New SolidBrush(Color.Black)), 0, 0)
ms = New MemoryStream()
img.Save(ms, System.Drawing.Imaging.ImageFormat.Png) "--选择透明格式
Response.ClearContent() "--原本是准备输出html流,现在输出图信数据,所以要修改http头
Response.ContentType = "image/png"
Response.BinaryWrite(ms.ToArray())
Else
End If
Response.End() "--这个最好带上
End Sub
End Class
发表评论
-
关于建立asp.net WEB应用程序时,提示IIS运行的不是asp.net 1.1版的解决办法
2006-07-24 21:49 646关于建立asp.net WEB应用程序时,提示IIS运行的不是 ... -
Asp.Net 学习资源列表
2006-11-16 17:25 591名称:快速入门地址:http://chs.gotdotnet. ... -
C# 里XML文件读写
2006-11-24 22:14 647已知有一个XML文件(bookstore.xml)如下:< ... -
asp.net页面间数据传递
2007-09-23 00:47 5491. Get(即使用QueryString显 ... -
一些常见的ASP.NET验证码
2007-09-23 11:17 1628一些常见的验证码效果图: ... -
asp.net 验证码类
2007-09-23 11:30 973我们在设计用户登录模块时,经常会用到验证码,可以有效地防止黑 ... -
C#中获取程序当前路径的集中方法
2007-10-11 18:55 531stringstr1=Process.GetCurrent ... -
SQL Server 中图片和文件的存取(C#.NET)
2007-10-13 19:30 1173读取文件夹,将文件直接保存到数据库中前台文件 <!--& ... -
.NET中的lock
2007-10-13 19:43 1107lock 关键字可将语句块标记为临界区,方法是获取给定对象 ... -
创建ADOKeycap数据库对象
2007-10-13 19:46 581为什么要创建数据库对象?ADOKeycap 必须创建Datab ... -
ASP.net app_Code dll 类中获得当前路径的方法(非页面中)
2007-10-13 20:44 1700在ASP.NET 页面中获得当前路径的方法很多,比如 MapP ... -
ADOKeycap 比 Socut.data.dll 优越在哪?
2007-10-13 20:45 750最近有很多原Socut.data.dl ... -
使用ADOKeycap统计数据
2007-10-13 20:47 543请注意引用: usingSystem.Data.Commo ... -
认识 yueue.ADOKeycap 开源数据库组件
2007-10-13 20:49 714ADOKeycap 是什么?ADOKeycap ... -
yueue.ADOKeycap 开源数据库组件 1.02 下载+反馈 页面
2007-10-13 20:50 7181.02 版本主要改进如下:1.加入了新方法 AddOutPa ... -
添加yueue.ADOKeycap数据库组件到您的项目
2007-10-13 21:17 623为什么要添加引用?您必须通过在您的工程中引用ADOKeycap ... -
使用AODKeycap读取数据
2007-10-13 21:18 756请注意引用: usingSystem. ... -
使用ADOKeycap插入,更新,删除数据
2007-10-13 21:19 716在执行Delete命令时建议只使用Delete From 而不 ... -
在ADOKeycap中使用DataReader读取数据
2007-10-13 21:21 701注意 您在阅读本教程前最好先阅读 <将ADOKeyc ...
相关推荐
为 asp.net 2.0 的菜单控件增加 target 属性 ASP.NET 2.0 的内部变化 常见的 ASP.NET 2.0 转换问题和解决方案 Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1) -- 异步WebService调用 ASP.NET 2.0页面框架的几...
一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架源代码! 采用主流框架,容易上手,简单易学,学习成本低。可完全实现二次开发、基本满足80%项目需求。 可以帮助解决.NET项目70%的重复工作,让开发更多关注业务...
第1章 asp.net介绍 2 1.1 xhtml语言 2 1.2 静态网页 3 1.3 动态网页 3 1.4 iis的安装和配置 3 1.5 asp.net开发的预备知识 4 1.5.1 asp.net简介 4 1.5.2 在iis上配置asp.net 4 1.5.3 visual studio版本与 ...
不少网站为了防止用户利用...所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
.Net提高班-asp.net mvc其他.pdf .Net提高班-docker.pdf .Net提高班-git.pdf( G; l. c1 b& u/ G1 F .Net提高班-IM项目.pdf1 ?" R, Q/ _& o& t/ K6 p: N .Net提高班-linux课件.pdf .Net提高班-MVC项目.pdf ...
NRecaptcha2介绍reCAPTCHA v.2.0对ASP.NET Web窗体和ASP.NET MVC的支持安装用法ASP.NET Web表单ASP.NET MVCASP.NET网页如何在页面上使用多用验证码?执照
基于基于ASP.NET实现的网上书城项目源码+sql数据库+项目说明+演示视频.zip 演示视频为项目所有功能展示 sql文件为数据库文件 功能如下: # 一、登录注册功能 包含基础的登录与注册功能,同时支持表单验证与随机...
用于ASP.NET MVC 5 小部件 用法 在注册并获取站点密钥和秘密。 将站点密钥和秘密添加到 web.config 中: ... 将 Recaptcha2 类添加到您的 ASP.NET MVC 5 项目。 将 Recaptcha2 添加到您的表单视图中: ...
最近工作中遇到一个需求,需要在ASP.NET Core中来实现一个基础的身份认证,下面这篇文章主要给大家介绍了关于ASP.NET Core中实现用户登录验证的最低配置的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
asp.net 表单登录+样式+生成随机汉字验证码+验证登录,自己亲撸的代码,需要下载,如有问题欢迎来骚扰
可以大幅提升页面的响应速度IoC容器轻量且快速默认支持使用属性注册程序集中的类型到容器支持构造函数注入支持多个框架的托管支持托管在Asp.Net支持托管在Asp.Net Core支持托管在Owin插件不需要理会托管在哪个框架,...
PoliteCaptcha是用于ASP.NET MVC 3表单的垃圾邮件阻止库。 强迫人们用难以阅读的图像来填写表格,因为我们不能把它们与恶意制作的计算机程序区分开来,这是不礼貌的。 PoliteCaptcha尝试先验证用户代理是否为真实的...
内容索引:.NET源码,其它类别,XML,文件操作 一个实用的小例子,将注册表单的信息提交写入XML文件,并读取这些数据,支持重复写入,进行重名验证等,程序使用了验证码和Wizard控件。新手朋友可以参考一下。
C#实现表单提交(1) - 真功夫
NetSNS是基于Asp.Net开发的社交网络互动web应用程序,整个产品采用先进的技术(SQL2000数据库,Ajax,Div CSS布局等诸多网络流行元素囊括其中),适合各方面应用的要求, 模板与程序分离,标签调用,支持DIV CSS,...
主要介绍了JS获取短信验证码倒计时的实现代码,需要的朋友可以参考下
如果选择关闭,那么模板中所有相关的验证码表单都要手工去掉保存提交。 (10)服务升级设置: 这里可以设置升级VIP费用、明星榜费用、对认证会员打折设置等。包括人民币与金币汇率。 消费卡使用期限,即后台...
完整的React Material UI教程-表单设计和验证这些是用于解释Material UI...物料用户界面-表单验证视频教程: : :bar_chart: 教程清单 :money_bag: 支持我们角度的 贝宝 Asp.Net核心 亚马逊会员 Reacthttp://bit.ly/3
ASP.NET 支持三种不同的开发模式: Web Pages(Web 页面)、MVC(Model View Controller 模型-视图-控制器)、Web Forms(Web 窗体) MVC 编程模式 MVC 是三种 ASP.NET 编程模式中的一种。 MVC 是一种使用 MVC...
NetCMS一款基于微软ASP.NET技术的CMS。 NetCMS1.5版本是采用微软的ASP.NET2.0技术进行架构、功能强大的网站管理软件。系统包括内容采集、整理、分类、审核、发布和管理的全过程,具备完善的信息管理和发布管理...