深圳网站制作公司易捷网络欢迎您,我司主营业务:深圳企业网站制作,欢迎来电。
深圳企业网站制作
深圳网站制作业务咨询
0755-61603557
赵先生:13714247375
深圳网站制作技术支持
您现在的位置:网站首页 > 深圳网站制作教程

深圳网站制作公司中如何去实现asp.net(c#)验证码

文章作者:易捷网站制作公司编辑    文章来源:深圳网站制作公司-易捷网络

思考验证码的用处?
1.认为图片验证码没有什么用,并且也特别的烦人(每次上移动的网站都要频频地输入验证码),但人家要求,也只好弄一个。
2.验证码有用,有什么作用?

比如某黑客获得一银行账号,然后打开账号的开户银行的网上银行登录界面。
(1)没有验证码,只需要输入用户名和密码就能进入。
黑客:马上写了一个程序,用来模拟浏览器向网上银行服务器提交账号和密码尝试登录。(枚举字典攻击 )由于取款密码是6位阿拉伯数字,黑客的电脑从六个零开始测试一直到六个九(也就有一百万种组合),这一定会测试出真正的密码。
黑客:找到一台宽带高速上网的电脑,假设这台电脑1秒能测试10个密码,于是花费10万秒的时间肯定能找到密码。10万秒也就是27小时,一天多点的时间,实际上很可能用不了那么长的时间。黑客外头转了一圈回来,发现密码已经找到了,于是马上登录网上银行捞钱,或者伪造一个银行卡去ATM机上提取现金。也就是说黑客最多花了一天时间即可获得数目不可预知的非法收入。
(2)采用了验证码技术
用户登录时除了要输入账号和取款密码,浏览器还显示一个图片,里面显示了一些潦草的字符,用户需要辨认这些字符然后再输入进去,浏览器向服务器提交表单时会附加用户输入的验证码,服务器接受表单数据后除了校验账号和取款密码后,还要检查验证码是否输入正确,若登录信息校验失败,则服务器端则会提示重新登录,而且还生成包含随机内容的新的验证码,用户在次登录时又得重新识别新的验证码了。
由于正确的验证码文本是保存在服务器上的,客户端的黑客程序不可能获得,验证码的内容是随机的,黑客程序也无法找到规律,只能辨认从服务器端发出的包含验证码的图片来获得验证码。这里就体现了电脑和人脑的差别了,人脑在图形识别方面远远超过了目前的电脑,服务器端使用一些技术生成的书写潦草,充满随机分布的杂点的图片,人脑是可以相当容易的识别的,但目前的电脑是难以识别的。黑客程序无法识别验证码,只能显示图片让黑客亲自辨认,这时每测试一次密码,黑客都得仔细辨认一下验证码图片,然后手工输入验证码文本。最多要输入一百万次。

新建页面checkimage.aspx

checkimage.aspx.cs代码:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Drawing;
using System.IO;
namespace jgy_keshi_lyb
{
public partial class checkimage : System.Web.UI.Page
{
Random ran = new Random();
protected void Page_Load(object sender, EventArgs e)
{
string str = getRandomValidate(4);
Session["check"] = str;
//这一步是为了将验证码写入Session,进行验证,不能缺省,也可一使用cookie
getImageValidate(str);
}
//得到随机字符串,长度自己定义
private string getRandomValidate(int len)
{
int num;
int tem;
string rtuStr = "";
for (int i = 0; i < len; i++)
{
num = ran.Next();
/*
* 这里可以选择生成字符和数字组合的验证码
*/
tem = num % 10 + ''0'';//生成数字
//tem = num % 26 + ''A'';//生成字符
rtuStr += Convert.ToChar(tem).ToString();
}
return rtuStr;
}
//生成图像
private void getImageValidate(string strValue)
{
//string str = "OO00"; //前两个为字母O,后两个为数字0
int width = Convert.ToInt32(strValue.Length * 12); //计算图像宽度
Bitmap img = new Bitmap(width, 23);
Graphics gfc = Graphics.FromImage(img); //产生Graphics对象,进行画图
gfc.Clear(Color.White);
drawLine(gfc, img);
//写验证码,需要定义Font
Font font = new Font("arial", 12, FontStyle.Bold);
System.Drawing.Drawing2D.LinearGradientBrush brush =
new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.DarkOrchid, Color.Blue, 1.5f, true);
gfc.DrawString(strValue, font, brush, 3, 2);
drawPoint(img);
gfc.DrawRectangle(new Pen(Color.DarkBlue), 0, 0, img.Width - 1, img.Height - 1);
//将图像添加到页面
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
//更改Http头
Response.ClearContent();
Response.ContentType = "image/gif";
Response.BinaryWrite(ms.ToArray());
//Dispose
gfc.Dispose();
img.Dispose();
Response.End();
}
private void drawLine(Graphics gfc, Bitmap img)
{
//选择画10条线,也可以增加,也可以不要线,只要随机杂点即可
for (int i = 0; i < 10; i++)
{
int x1 = ran.Next(img.Width);
int y1 = ran.Next(img.Height);
int x2 = ran.Next(img.Width);
int y2 = ran.Next(img.Height);
gfc.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); //注意画笔一定要浅颜色,否则验证码看不清楚
}
}
private void drawPoint(Bitmap img)
{
/*
//选择画100个点,可以根据实际情况改变
for (int i = 0; i < 100; i++)
{
int x = ran.Next(img.Width);
int y = ran.Next(img.Height);
img.SetPixel(x,y,Color.FromArgb(ran.Next()));//杂点颜色随机
}
*/
int col = ran.Next();//在一次的图片中杂店颜色相同
for (int i = 0; i < 100; i++)
{
int x = ran.Next(img.Width);
int y = ran.Next(img.Height);
img.SetPixel(x, y, Color.FromArgb(col));
}
}

}
}

在login.aspx页面中使用验证码,并实现双击更换图片功能:

<img src="checkimage.aspx"
alt=''看不清楚,双击图片换一张。''
ondblclick="this.src= ''checkimage.aspx?flag='' + Math.random() "
border="1" height="24" />
深圳网站制作公司易捷网络科技主营业务:企业网站制作、网站推广优化、企业邮箱申请、域名空间购买、网站备案、论坛网站制作和企业网站维护。网站建设服务热线:13714247375
上一篇企业网站制作技术文章:    深圳网站制作公司中浅谈百度是如何收录的
下一篇企业网站制作技术文章:    深圳网站制作公司中如何开通个性QQ域名邮箱

深圳网站制作最新案例推荐:

深圳网站制作相关文章阅读
关于我们
公司简介
人才招聘
售后服务
联系我们
网站制作套餐
基本型网站制作套餐
标准型网站制作套餐
品牌型网站制作套餐
综合型网站制作套餐
网站制作教程
网站制作常见问题
网站优化常见问题
企业邮箱常见问题
网站备案常见问题
联系方式
联系人:赵经理
电话:0755-61603557
邮箱:info@qifor.com
手机:13714247375
地址:广东.深圳宝安西乡宝源路鸿源大厦618

微信扫码咨询
深圳市易捷网络科技有限公司版权所有    备案号:粤ICP备12084881号  济南网站建设 网赚项目 花呗自动回款 北京网站建设 隆祥商务网 深圳网站建设 网站地图 XML
QQ在线咨询