CAPTCHA در ASP.NET

CAPTCHA در ASP.NET

نمونه سورس کد CAPTCHA در ASPX VB.NET: راهنمای جامع و کامل


در دنیای امروز، امنیت وبسایت‌ها و برنامه‌های تحت وب اهمیت زیادی پیدا کرده است. یکی از راهکارهای رایج برای مقابله با ربات‌ها و حملات خودکار، استفاده از سیستم‌های CAPTCHA است. این سیستم‌ها به صورت تصویری، متنی یا صوتی طراحی می‌شوند تا تشخیص انسان از ربات را تسهیل کنند. در این مقاله، قصد داریم به صورت جامع و کامل، نمونه سورس کد CAPTCHA در ASPX VB.NET را شرح دهیم و نحوه پیاده‌سازی آن را گام به گام بررسی کنیم.
مقدمه‌ای بر CAPTCHA و اهمیت آن
CAPTCHA مخفف عبارت "Completely Automated Public Turing test to tell Computers and Humans Apart" است. این سیستم‌ها، نقش دروازه‌ای را ایفا می‌کنند که جلوی ورود ربات‌ها و برنامه‌های خودکار به وبسایت‌ها را می‌گیرند. در واقع، با طراحی یک تصویر یا سوالی که برای ربات‌ها دشوار است، انسان‌ها به راحتی می‌توانند وارد سایت شوند، اما ربات‌ها دچار مشکل می‌شوند. پیاده‌سازی یک CAPTCHA موثر، نه تنها امنیت سایت را افزایش می‌دهد، بلکه از حملات مخرب و هک‌های خودکار جلوگیری می‌کند.
ساختار کلی سیستم CAPTCHA در ASPX VB.NET
برای پیاده‌سازی یک سیستم CAPTCHA در ASPX VB.NET، معمولاً چند مرحله مهم وجود دارد:
  1. تولید و نمایش تصویر CAPTCHA شامل حروف یا اعداد تصادفی.

  1. ذخیره‌سازی مقدار واقعی این تصویر در سمت سرور برای مقایسه در مرحله بعد.

  1. دریافت ورودی کاربر و مقایسه آن با مقدار ذخیره‌شده.

  1. اعتبارسنجی و ارائه پاسخ مناسب بر اساس صحت یا عدم صحت پاسخ.
    در ادامه، این مراحل را به صورت کامل‌تر و عملی شرح می‌دهیم.
    مرحله اول: تولید تصویر CAPTCHA
    در این مرحله، باید یک تصویر حاوی متن تصادفی ساخته شود. برای این کار، می‌توانیم از کلاس‌های مربوط به رسم و گرافیک در VB.NET بهره ببریم. یک رشته تصادفی شامل حروف و اعداد، تولید می‌گردد و سپس بر روی یک تصویر رسم می‌شود. این تصویر باید به گونه‌ای طراحی شود که خواندن آن برای ربات‌ها دشوار باشد؛ مثلا، با افزودن نویز، انحراف، تغییر رنگ و فونت‌های مختلف.
    در کد زیر، نمونه‌ای از تولید یک رشته تصادفی و رسم آن بر روی تصویر آورده شده است:
    vb.net  

Function GenerateCaptchaImage(ByVal captchaText As String) As Bitmap

Dim width As Integer = 200

Dim height As Integer = 80

Dim bmp As New Bitmap(width, height)

Using gfx As Graphics = Graphics.FromImage(bmp)

' پس‌زمینه را پر می‌کنیم

gfx.Clear(Color.LightGray)
' تعیین فونت و رنگ

Dim font As New Font("Arial", 40, FontStyle.Bold)

Dim brush As New SolidBrush(Color.Black)
' رسم متن روی تصویر

gfx.DrawString(captchaText, font, brush, New PointF(10, 20))
' افزودن نویز و تغییرات برای امنیت بیشتر

AddNoise(gfx, width, height)

End Using

Return bmp

End Function


در این کد، تابع `GenerateCaptchaImage` یک تصویر Bitmap ساخته و متن تصادفی را بر روی آن رسم می‌کند. همچنین، می‌توان در داخل این تابع، عملیات افزودن نویز یا انحراف‌های تصویری را انجام داد تا تصویر پیچیده‌تر شود.
مرحله دوم: ذخیره‌سازی و مدیریت مقدار CAPTCHA
پس از تولید تصویر، باید متن واقعی آن را در سرور ذخیره کنیم. این کار معمولاً با استفاده از Session انجام می‌شود، چون Session هر کاربر را جداگانه نگه می‌دارد و از تداخل جلوگیری می‌کند.
مثلاً، در صفحه ASPX، در هنگام بارگذاری یا درخواست CAPTCHA، مقدار متن تولید شده را در Session قرار می‌دهیم:
vb.net  

Dim captchaText As String = GenerateRandomText(6)

Session("CaptchaText") = captchaText

Dim captchaImage As Bitmap = GenerateCaptchaImage(captchaText)

captchaImage.Save(Response.OutputStream, Imaging.ImageFormat.Png)


در اینجا، تابع `GenerateRandomText` یک رشته تصادفی 6 کاراکتری تولید می‌کند، و سپس تصویر مربوط به آن ساخته و به کاربر نمایش داده می‌شود.
مرحله سوم: دریافت ورودی کاربر و مقایسه
در فرم HTML یا ASPX، یک کنترل TextBox برای وارد کردن پاسخ و یک Button برای ارسال وجود دارد. پس از ارسال، باید مقدار وارد شده توسط کاربر را با مقدار ذخیره‌شده در Session مقایسه کنیم.
کد نمونه در رویداد Button_Click به صورت زیر است:
vb.net  

If Not String.IsNullOrEmpty(Session("CaptchaText")) Then

If TextBoxCaptcha.Text.Trim().Equals(Session("CaptchaText").ToString(), StringComparison.OrdinalIgnoreCase) Then

' پاسخ صحیح است

LabelResult.Text = "پاسخ صحیح است!"

Else

' پاسخ نادرست است

LabelResult.Text = "پاسخ نادرست است، لطفاً دوباره تلاش کنید."

GenerateAndDisplayCaptcha()

End If

End If


در این قسمت، کاربر پاسخ وارد شده را با مقدار واقعی مقایسه می‌کنیم و نتیجه را به صورت پیام نشان می‌دهیم.
مرحله چهارم: بازنشانی و تولید CAPTCHA جدید
برای بهبود کاربری، بهتر است هر بار که کاربر پاسخ نادرستی وارد می‌کند، یک تصویر جدید تولید و نمایش داده شود. این کار توسط تابع `GenerateAndDisplayCaptcha()` انجام می‌شود، که مجدداً مقدار تصادفی ایجاد، تصویر ساخته و نمایش داده می‌شود.
نکات مهم در طراحی CAPTCHA موثر
- استفاده از فونت‌ها و رنگ‌های متنوع برای دشوارتر کردن تشخیص توسط ربات‌ها.

- افزودن نویز، خطوط منحنی و تغییر در پس‌زمینه برای پیچیده‌تر کردن تصویر.

- محدود کردن تعداد تلاش‌ها برای جلوگیری از حملات ... ← ادامه مطلب در magicfile.ir
باکس دانلود (CAPTCHA در ASP.NET)
دانلود

پیشنهاد برای دانلود ( CAPTCHA در ASP.NET )

برای دانلود کردن اینجا را کلیک فرمایید

نظرات کاربران (۳)

مریم احمدی

عالی بود .. با تشکر