CSDN 登陆页面上的“校验码”是干嘛用的?

zahuifan 2004-10-27 11:06:08
CSDN 登陆页面上最近多了一个“校验码”,好像是一个图片,不知道是干什么用的?
是用来增加安全性的吗?
能详述其实现方法的大虾加30分。
...全文
229 点赞 收藏 21
写回复
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
HuaEr2001 2004-10-28
安全性的
回复
hnahzx 2004-10-28
gz
回复
xinshaw 2004-10-28
是啊
回复
cs920 2004-10-28
不管有没有人破了。。。它的目地是防止恶意登陆。
回复
wjcking 2004-10-28
gz
回复
fellowcheng 2004-10-27
参观
回复
hivak47 2004-10-27
增加安全性。
回复
eagle128 2004-10-27
呵,楼上的都很厉害。
回复
pollyan 2004-10-27
谨防假冒的
回复
yaopeng117 2004-10-27
为了防止恶意的登陆软件。
回复
tingpig 2004-10-27
ASP.Net实现验证码
-----------------------------------start----------------------------------------------
using System.Drawing;
using System.Drawing.Imaging;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//RndNum是一个自定义函数
string VNum=RndNum(4); //这里的数字4代表显示的是4位的验证字符串!
Session["VNum"]=VNum;
ValidateCode(VNum);
}
//生成图像函数
private void ValidateCode(string VNum)
{
int Gheight=(int)(VNum.Length * 11.5);
//gheight为图片宽度,根据字符长度自动更改图片宽度
System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight,20);
Graphics g = Graphics.FromImage(Img);
g.DrawString(VNum,new System.Drawing.Font("Arial",10),new System.Drawing.SolidBrush(Color.Red),3,3);
//在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)
System.IO.MemoryStream ms=new System.IO.MemoryStream();
Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
Response.ClearContent(); //需要输出图象信息 要修改HTTP头
Response.ContentType="image/Png";
Response.BinaryWrite(ms.ToArray());
g.Dispose();
Img.Dispose();
Response.End();
}

//生成随机数函数中从Vchar数组中随机抽取
//字母区分大小写
public string RndNum(int VcodeNum)
{
string Vchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z" ;

string[] VcArray = Vchar.Split(',') ;
string VNum = "" ;//由于字符串很短,就不用StringBuilder了
int temp = -1 ;//记录上次随机数值,尽量避免生产几个一样的随机数

//采用一个简单的算法以保证生成随机数的不同
Random rand =new Random();
for ( int i = 1 ; i < VcodeNum+1 ; i++ )
{
if ( temp != -1)
{
rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
}
//int t = rand.Next(35) ;
int t=rand.Next(35);
if (temp != -1 && temp == t)
{
return RndNum( VcodeNum );
}
temp = t ;
VNum += VcArray[t];

}
return VNum ;
}
-----------------------------------end--------------------------------------------

下面是Login.Aspx在在调用提交按钮的响应事件中
public void doit(object sender, System.EventArgs e)
{
if(Page.IsValid)
{

string VNum;
VNum=Session["VNum"].ToString();
ViewState["VNum"]=VNum;
if(this.Vcode.Text==ViewState["VNum"].ToString())
{

Hover.Manage.CheckLogin obj=new Hover.Manage.CheckLogin();
string name=username.Text;
string password=FormsAuthentication.HashPasswordForStoringInConfigFile(pass.Text.ToString(),"md5");
if(!obj.checklogin(name,password))
{
Response.Redirect("../Error.aspx?action=Errorlogin");
Response.End();
return;
}
else
{
Session.Add("adminname",name);
Session.Add("adminpass",password);
Response.Redirect("Default.aspx");
Response.End();
return;
}

}
else
{
Response.Write("<script>alert(\"请输入正确的附加码!\");</script>");
}
}
}
如果提交过来的验证字符串正确就验证是否是合法用户!
否则弹出提示返回登陆页!你也可以简化此页!
if(this.Vcode.Text==ViewState["VNum"].ToString())
{
Response.Write("验证码正确");
}
else
{
Response.Write("验证码错误!");
}
回复
Ayuann 2004-10-27
shuker(我是一只小花猪)说的没错,的确是增加软件模拟登录使用的安全机制
回复
hanbinghai 2004-10-27
同意楼上
回复
burnyxu 2004-10-27
好象是这样:
用来防止因为恶意的客户端程序连续注册而大量消耗服务端资源,校验码是随机生成的(可能保存在数据库中),用图片数字比文本数字更加安全,不容易被读出来,好象吧.
回复
gesnpt 2004-10-27
增加安全性
回复
Tomgus 2004-10-27
主要是防止非人为的登陆操作 比如向你的服务器写垃圾信息 这个是芝加哥梅隆大学
开发的Captcha方法 这种方法提出一种方案,使人能够识别,机器却很难识别。但是
一般验证码还需要一些背景的干扰。因为已经有OCR技术(光学字符识别)能够辨别图片
中的验证字符
回复
shuker 2004-10-27
是用来增加安全性的,可以防止用软件模拟登陆来破解用户密码
回复
ddggggdd 2004-10-27
hehe
回复
速马 2004-10-27
要是有OCR识别算法的话这种东西其实也是形同虚设...
回复
张海霖 2004-10-27
没什么用,懒猫已经破解了。
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.