当前位置:首页 -> 焦点新闻

防止自动注册代码

2005/1/7 14:50:35       
 

Preventing Automated Web Site Registrations

Introduction

Many heavily trafficked public portals provide features such as free emailing services, on-line storage etc. Webmasters administrating these sites always want to make sure that the users registering with their sites are "real" users instead of automated one. Take an example of MSN registration, when you go to their registration page and fill in the details they display a small randomly generated image with some text. The user is supposed to enter the text in the textbox provided on the form which confirms that the person is physically registering with the site. In this article I will show you how to develop similar mechanism for your ASP.NET applications.

GDI+ and Random class

GDI+ classes allow you to easily generate graphics on the fly and display in the web pages. We will be using these classes along with Random class to develop our solution.

Generating random strings

First we need to device a mechanism that will give us a randomly generated string with each request to the page. Following routine does exactly the same.

public static string GetRandomString(int length)
{
int intZero=0, intNine=0, intA=0, intZ=0, 
intCount=0, intRandomNumber=0;
string strRandomString;
Random rRandom =new Random(System.DateTime.Now.Millisecond);
intZero = '0';
intNine = '9';
intA = 'A';
intZ = 'Z';

strRandomString = "";
while (intCount <  length)
{
intRandomNumber = rRandom.Next(intZero, intZ);
if(((intRandomNumber >= intZero) && 
(intRandomNumber <= intNine) || 
(intRandomNumber >= intA) && (intRandomNumber <= intZ)))
{
strRandomString = strRandomString + (char)intRandomNumber;
intCount = intCount + 1;
}
}
return strRandomString;
}

The function accepts the length of the string to be generated and constructs a random string using Random class. We will not go into details of the logic used as it is simple and clear from above routine.

You will find above function in the RandomString.cs file available in the download.

Generating and outputting image on the fly

Next step is to generate images on the fly and output on the response stream.

Bitmap bmp=new Bitmap(100,30);
Graphics g=Graphics.FromImage(bmp);
g.Clear(Color.Navy);
string randomString=preventautopost.RandomString.GetRandomString(6);
Session["randomstring"]=randomString;
g.DrawString(randomString,new Font("Courier",16),
new SolidBrush(Color.WhiteSmoke),2,2);

Here, we create an instance of Graphics class from an Image (represented by Bitmap class). We  then draw the randomly generated string on this bitmap and save the image to the Response.

You will find this code in the randomimagepage.aspx file available in the download.

Building the registration form

Finally you will develop a registration form which will display the randomly generated image in an Image control. You will find the code and markup in registrationform.aspx available in the download. One important to note in the web form markup is the following line:

<asp:Image id=Image1 runat="server" 
ImageUrl="randomimagepage.aspx" />

Note how the ImageUrl property is set to the previous web form that emits the dynamic image on the response stream. Once the user submits the form we check the entered random code against what was generated.

string str=(string)Session["randomstring"];
if(str!=TextBox4.Text)
{
Label5.Text="Random string verification failed!";
}
else
{
Label5.Text="Validation successful!";
//do database insert here
}

Source Code Download

Complete source code in C# is including web forms and image generation logic is available along with the article.

Summary

Automated form submission is a matter of concern for many large portals - specially offering services such as free email. If you are developing such a web site it would be nice to provide some way in your application that will ensure that users are filling the registration forms themselves rather than an automated system. In this article we accomplished this goal using GDI+ classes and Random string generation logic.

About the author

Name :

Bipin Joshi

Email :

webmaster at dotnetbips.com

Profile :

Bipin Joshi is the webmaster of DotNetBips.com. He is the founder of BinaryIntellect Consulting (www.binaryintellect.com) - a company providing training and consulting services on .NET framework. He conducts intensive training programs in Thane/Mumbai for developers. He is also a Microsoft MVP (ASP.NET) and a member of ASPInsiders.


煤炭网版权与免责声明:

凡本网注明"来源:煤炭网www.coal.com.cn "的所有文字、图片和音视频稿件,版权均为"煤炭网www.coal.com.cn "独家所有,任何媒体、网站或个人在转载使用时必须注明"来源:煤炭网www.coal.com.cn ",违反者本网将依法追究责任。

本网转载并注明其他来源的稿件,是本着为读者传递更多信息的目的,并不意味着本网赞同其观点或证实其内容的真实性。其他媒体、网站或个人从本网转载使用时,必须保留本网注明的稿件来源,禁止擅自篡改稿件来源,并自负版权等法律责任。违反者本网也将依法追究责任。 如本网转载稿件涉及版权等问题,请作者在两周内尽快来电或来函联系。

  • 用手机也能做煤炭生意啦!
  • 中煤远大:煤炭贸易也有了“支付宝”
  • 中煤开启煤炭出口贸易人民币结算新时代
  • 下半年煤炭市场依然严峻
市场动态

网站技术运营:北京真石数字科技股份有限公司、喀什中煤远大供应链管理有限公司、喀什煤网数字科技有限公司

总部地址:北京市丰台区总部基地航丰路中航荣丰1层

京ICP备18023690号-1      京公网安备 11010602010109号


关注中煤远大微信
跟踪最新行业资讯