Simple ASP.NET CAPTCHA

Saqib KhanSenior Developer
Software Developer for Web & Desktop Applications
Published:
I will show you how to create a ASP.NET Captcha control without using any HTTP HANDELRS or what so ever. you can easily plug it into your web pages.

For Example

a = 2 + 3 (where 2 and 3 are 2 random numbers)

Session("Answer") = 5

then we will create a image using System.drawing namespace with the text " 2+ 5 = " within it. We will store the result into a session variable, so later on our webpage we can use this session variable to compare with what user types.

Lets see the code of Captcha.aspx:

Imports System.Drawing
                      
                      Partial Class Captcha
                          Inherits System.Web.UI.Page 
                      
                          Private Sub returnNumer()
                      
                              Dim num1 As New Random
                              Dim num2 As New Random
                      
                              Dim numQ1 As Integer
                              Dim numQ2 As Integer
                              Dim QString As String
                      
                      
                              numQ1 = num1.Next(10, 15)
                              numQ2 = num1.Next(17, 31) 
                      
                              QString = numQ1.ToString + " + " + numQ2.ToString + " = "
                              Session("answer") = numQ1 + numQ2
                      
                              Dim bitmap As New Bitmap(85, 35)
                              Dim Grfx As Graphics = Graphics.FromImage(bitmap)
                              Dim font As New Font("Arial", 18, FontStyle.Bold, GraphicsUnit.Pixel)
                              Dim Rect As New Rectangle(0, 0, 100, 50)
                      
                              Grfx.FillRectangle(Brushes.Brown, Rect)
                              Grfx.DrawRectangle(Pens.PeachPuff, Rect) ' Border
                              Grfx.DrawString(QString, font, Brushes.Azure, 0, 0)
                      
                              Response.ContentType = "Image/jpeg"
                              bitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
                      
                              bitmap.Dispose()
                              Grfx.Dispose() 
                      
                          End Sub
                      
                          Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                      
                              Call Me.returnNumer()
                      
                          End Sub
                      
                      
                      End Class

Open in new window


So the Page_Load event generates an image.

Now we can use this Page within any aspx page for verification. For Example here is form2.aspx

<asp:image runat=server imgeurl="captcha.aspx">

now you can create a TextBox, have users enter some text into it, and then create a ANSWER button, upon clicking of ANSWER button compare the value of textbox with the Session variable Session("answer"), if both are same then Verification passed.

Any questions please post below.

Thanks for reading.
0
2,814 Views
Saqib KhanSenior Developer
Software Developer for Web & Desktop Applications

Comments (3)

CERTIFIED EXPERT

Commented:
Why not use Google's captcha? I recently implemented in my asp.net and it works great.
Saqib KhanSenior Developer

Author

Commented:
Absolutely, the purpose of this post was to show how to create a captcha yourself.
CERTIFIED EXPERT
Most Valuable Expert 2011
Top Expert 2015

Commented:
There is a reason why all of the CAPTCHAs that you see these days are very squiggly, borderline unreadable texts:  OCR is very easy to perform against normal text. The kind of CAPTCHA presented here is good for a personal or family blog, at best. For something with a larger audience or having a higher risk/value, a more established CAPTCHA should be employed.

Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.