تالار گفتمان مانشت
آموزش ساخت کد Captcha در ASP.net - نسخه‌ی قابل چاپ

آموزش ساخت کد Captcha در ASP.net - m@hboobe - 30 تیر ۱۳۹۲ ۱۱:۲۱ ب.ظ

معرفی CAPTCHA
CAPTCHA مخفف Completely Automated Public Turing Test To Tell Computers And Humans Apart بوده و به معنی تصدیق این امر که داده دریافتی توسط یک انسان ایجاد شده است.

یک راه حل آسان و قابل فهم ، جهت ساخت تصاویر امنیتی و استفاده از این تکنیک وجود داره . باید تصویری بصورت داینامیک ایجاد کنیم که نشان دهنده متن اتفاقی باشد. کاربر با مشاهده این تصویر ، متن درون آن را وارد کرده و امکان ارسال فرم برای او فراهم می شود. در واقع تا زمانی که متن صحیح وارد نشود فرم ارسال نمی شود.

خب برای این کار ما باید یک صفحه ساده aspx ایجاد کنیم و در بخش code behind (فایل aspx.cs ) صفحه وارد میشیم و در Page_Load کد های زیر رو قرار میدیم.
باید این دو فضای نام رو فراخوانی کرد
using System.Drawing;
using System.Text;

کد:
//ایجاد شیء گرافیک و دیگر ملزومات
                   Bitmap objBMP = new System.Drawing.Bitmap(80, 25);
                   Graphics objGraphics = System.Drawing.Graphics.FromImage(objBMP);
                   objGraphics.Clear(Color.DarkBlue);
                   objGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
                     //تنظیم فونت نوشته روی عکس
                   Font objFont = new Font("Viner Hand ITC", 13, FontStyle.Bold);
                    //ساخت رشته تصادفی ۵ رقمی
                   string randomStr = "";
                   Random autoRand = new Random();
                   randomStr = Convert.ToString(autoRand.Next(12345,99999));
            
                   //اضافه کردن متن در جلسه
                   Session.Add("randomStr", randomStr);
            
                   //نوشتن متن
                   objGraphics.DrawString(randomStr, objFont, Brushes.White, 6, 3);
            
                   //تنظیم نوع عکس و برگرداندن آن به عنوان خروجی
                   Response.ContentType = "image/GIF";
                   objBMP.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Gif);
            
                   //آزاد کردن منابع
                   objFont.Dispose();
                   objGraphics.Dispose();
                   objBMP.Dispose();

الان ما یک page داریم که هر بار یک عدد تصادفی تولید میکنه Shy
کافیه برای استفاده اون از یک asp:Image استفاده کنیم و ImageUrl رو برابر اسم صفحه بگذاریم.

برای بررسی کردن اینکه این کد صحیح وارد شده یا نه در بخش کد دکمه تایید Captcha
کد:
if (TxtCaptcha.Text != "")
        {
            if ((string)Session["randomStr"] == TxtCaptcha.Text.Trim())
            {
                //Submit Form
                Label1.Text = "Captcha is Correct";
                

            }
            else
            {
                //Show Error - Please Enter Security Code that show in Image
                Label1.Text = "Captcha isn't Correct";
            }
        }
        else
        {
            
            Label1.Text = "Please Enter the Captcha!";
        }
من اینجا از یه lable برای نشون دادن پیغام استفاده کردم.Smile

امیدوارم بدردتون بخوره Smile

RE: آموزش ساخت کد Captcha در ASP.net - good-wishes - 30 تیر ۱۳۹۲ ۱۱:۳۲ ب.ظ

جهت تکمیل فرمایش دوستمون برای این امر می شه از کامپوننت های image verifier آماده هم استفاده کرد
متنتون برام جالب بود هیچ وقت به فکر این که خودم یه دونه ایجاد کنم نیفتاده بودم Big Grin و همیشه از کامپوننت آماده استفاده میکردم
ممنون

RE: آموزش ساخت کد Captcha در ASP.net - A.Nouri - 31 تیر ۱۳۹۲ ۰۶:۱۴ ق.ظ

(۳۰ تیر ۱۳۹۲ ۱۱:۲۱ ب.ظ)m@hboobe نوشته شده توسط:  معرفی CAPTCHA
CAPTCHA مخفف Completely Automated Public Turing Test To Tell Computers And Humans Apart بوده و به معنی تصدیق این امر که داده دریافتی توسط یک انسان ایجاد شده است.
...

از مطلب مفیدتون تشکر می کنم.

فقط یک نکته ای هم بنده به فرمایشات شما اضافه میکنم. تا جایی که بنده اطلاع دارم ، در حال حاضر برای تشخیص نوع کاربر، صرفا از متن و عدد تصادفی در قالب عکس استفاده نمی کنند. چون می توان با استفاده از نرم افزارهای OCR، عکس را براحتی اسکن و تبدیل به متن کرده و سپس استفاده های نادرست از آن کرد.
بر اساس اطلاعات بنده، برای اطمینان بیشتر، از عکس های از پیش تعیین شده ای که قبلا توسط نرم افزار OCR ، غیرقابل خواندن تشخیص داده شده استفاده می شود. و یا اگر از متن تصادفی استفاده کنند ، باید آنرا به گونه ای تغییر دهند که توسط نرم افزارهای OCR قابل خواندن نباشد.

یکی از سرویس های آماده برای این منظور، سرویس reCaptcha است که توسط گوگل ارائه می شود و می توان براحتی در ASP.Net (و نیز سایر زبان ها )از آن استفاده کرد. لینک زیر توضیحات لازم را ارائه کرده است.

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


RE: آموزش ساخت کد Captcha در ASP.net - m@hboobe - 31 تیر ۱۳۹۲ ۰۲:۳۱ ب.ظ

(۳۱ تیر ۱۳۹۲ ۰۶:۱۴ ق.ظ)A.Nouri نوشته شده توسط:  فقط یک نکته ای هم بنده به فرمایشات شما اضافه میکنم. تا جایی که بنده اطلاع دارم ، در حال حاضر برای تشخیص نوع کاربر، صرفا از متن و عدد تصادفی در قالب عکس استفاده نمی کنند. چون می توان با استفاده از نرم افزارهای OCR، عکس را براحتی اسکن و تبدیل به متن کرده و سپس استفاده های نادرست از آن کرد.
بر اساس اطلاعات بنده، برای اطمینان بیشتر، از عکس های از پیش تعیین شده ای که قبلا توسط نرم افزار OCR ، غیرقابل خواندن تشخیص داده شده استفاده می شود. و یا اگر از متن تصادفی استفاده کنند ، باید آنرا به گونه ای تغییر دهند که توسط نرم افزارهای OCR قابل خواندن نباشد.

درسته حق باشماست ولی من برای یه برنامه در حد کاربرد پورتال اداری خواستم توضیح بدم که میشه بجای کامپوننت و سرویسی که برخی سایتها ارایه میدن میشه میشه خودمون هم اینکارو در ASP.net انجام بدیم Shy
ممنونم از دوستان که نظراتشون رو دراین باره گفتن من در حوزه asp هنوز نو پام Smile