صفحه 3 از 3 نخستنخست 123
نمايش نتايج 21 تا 22 از 22

تاپیک: آموزش Asp.NET

  1. #21
    همکار مدیر مهندسی شیمی آواتار P O U R I A
    رشته
    مهندسی شیمی
    تاريخ عضويت
    2011/10
    امتیاز
    25428
    پست ها
    20,995

    پيش فرض کتابخانه NetNicCapchaPro ایجاد تصاویر امنیتی کپچا حاوی متن اتفاقی (CAPTCHA)

    یکی از معضلات همه برنامه نویسان وب ، جلوگیری از حملات Brute Force است.

    در این نوع حملات ، هکر یک برنامه رو روی سیستمش اجرا میکنه که این برنامه صفحات ثبت نام و صفحات لاگین سایت شما رو پیدا می کنه و شروع می کنه به پر کردن فرم ها و ارسال اطلاعات ....
    این حمله به راحتی می تونه باعث بشه که سرور شما هنگ کنه و کلا سرور شما از دسترس خارج بشه ...
    (به قول خودمون سرور میره رو هوا )

    این حمله یکی از بدترین و خطرناک ترین نوع حملات است و وحشتناک ترین کابوس برنامه نویسان وب است .


    برای جلوگیری از این حملات ، یک راه ساده وجود داره ....
    کافیه که شما بتونین روبات (برنامه) رو از انسان تشخیص بدین...

    برای تشخیص انسان از روبات میشه از چند روش استفاده کرد :


    1. قرار دادن پرسش امنیتی در صفحات ثبت نام و لاگین
    2. قرار دادن تصویر امنیتی در صفحات ثبت نام و لاگین


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

    این روش یه مشکلی داره که بعد از یک مدت سوالات شما تکراری میشه و هکر به راحتی می تونه جوابا رو پیدا کنه ...

    روش دوم روش خیلی حرفه ای تر و امن تری است ، در این روش هیچ اطلاعاتی از دیتابیس خونده نمیشه ، حتی هیچ عکسی هم بصورت فیزیکی روی سرور شما ذخیره نمیشه !


    در [مشاهده ی لینک ها فقط برای اعضا امکان پذیر است. ]
    به شما [مشاهده ی لینک ها فقط برای اعضا امکان پذیر است. ] که دست ساز خودم بود رو کامل معرفی کردم و نحوه کار باهاش رو کامل بهتون آموزش دادم ....

    این کتابخونه بسیار عالی کار می کرد ، ولی تصویر رو بصورت فیزیکی روی سرور ذخیره می کرد .
    این کار موجب میشه که پهنای باند سایت شما الکی مصرف بشه و الکی پروسس اضافی روی سرور انجام بشه ...

    کتابخونه دست سازی که امروز می خوام بهتون معرفی کنم ، NetNicCapchaPro نام داره و همانطور که از اسمش مشخص است توسط سایت نت نیک (خودم) ساخته شده و نسخه پیشرفته تر کتابخونهNetNicCapcha (کتابخونه قبلی) است

    امکانات جدید این کتابخونه نسبت به نسخه قبلی :

    - در این کتابخونه تصویر بر روی رم ایجاد میشه و بعد به کاربر نمایش داده میشه و بعد از روی رم حذف میشه تا حتی کسی نتونه اطلاعات عکس رو از روی رم بخونه

    - در این کتابخونه شما علاوه بر امکانات قبلی ، امکان تنظیم کردن فونت و سایز فونت و استایل فونت نوشته های داخل تصویر رو هم دارید

    - در این کتابخونه شما می تونید با ترسیم خطوط در عکستون ، داخل تصویرتون یکم نویز اضافه کنین تا خوندنش توسط روبات ها غیر ممکن تر بشه ...
    (روبات های پیشرفته امکان خواندن تصاویر امنیتی رو دارا می باشند)

    - برای امنیت بیشتر شما می تونین یک لیست از رنگ های مورد نظرتون به کتابخونه بدین تا حتی رنگ خطوط نویر داخل تصویرتون هم بصورت رندوم از لیست شما انتخاب بشه

    - تعداد خطوط بین 2 و 4 خط بصورت رندوم انتخاب میشه

    - x و y خطوط هم بصورت رندوم انتخاب میشه


    هر چیزی که میشد بصورت داینامیک و رندوم باشه رو من تو این کتابخونه در نظر گرفتم تا تصویر شما دارای حداکثر امنیت باشه



    شروع کار با کتابخانه NetNicCapchaPro و ایجاد تصویر امنیتی کپچا (Capcha) :



    ابتدا کتابخونه NetNicCapchaPro رو از اینجا دانلود کنین :


    [مشاهده ی لینک ها فقط برای اعضا امکان پذیر است. ]

    [مشاهده ی لینک ها فقط برای اعضا امکان پذیر است. ]

    پس از دانلود ، کتابخانه رو unzip کنین و فایل کتابخونه رو درون پوشه Bin پروژتون اضافه کنین.
    (می تونین روی پروژتون کلیک راست کنین و Add Refrence رو بزنین و بعد وارد تب Browse بشین و بعد فایل کتابخونه رو بهش بدین)

    حال یک صفحه درون پروژتون اضافه کنین و یک اسم بهش بدین.

    (مثلا : SecImage.aspx )



    حال وارد CodeBehind این صفحه میشیم و کتابخونه رو به صفحه import می کنیم :

    PHP Code:
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    using NetNicCapchaPro
    (کتابخونه آخر که کتابخونه خودمه و کتابخونه های دیگه برای استفاده از کتابخونه من لازمه که به صفحه import بشن)

    حال درون رویداد لود این صفحه کد های زیر رو بنویسین :

    PHP Code:
    Capcha c = new Capcha();


    this.Response.Clear();


    this.Response.ContentType "image/jpeg";


    List<
    ColorColorlist = new List<Color>();


    Colorlist.Add(Color.White);
    Colorlist.Add(Color.Silver);
    Colorlist.Add(Color.DarkBlue);
    Colorlist.Add(Color.GreenYellow);
          


    string OutChars string.Empty;


    OutChars c.MakePic(12040Color.BlackBrushes.Yellow614
    "Arial"FontStyle.BoldCapcha.OutPutType.NumericAlphabeticLower
    Colorlist);


    c.Image.Save(this.Response.OutputStreamImageFormat.Jpeg);


    Session.Add("randomStr"OutChars);


    c.Dispose(); 

    خوب اول یک instance از کلاس Capcha می سازیم (این کلاس توی کتابخونه NetNicCapchaPro است)

    سپس باید صفحمون رو بصورت jpeg تنظیم کنیم .


    دقت کنین که من می خوام صفحه
    SecImage.aspx رو بصورت یک عکس در بیارم !

    پس هر جا شما این صفحه رو باز کنین ، این صفحه مثل یک عکس لود میشه

    (این تکنیک به روز ترین تکنیک نمایش عکس امنیتی است که در اون شما عکستون رو توی یک صفحه می سازین بعد مشخص می کنین که اون صفحه یک عکس است! ،بدین صورت که اون صفحه یک تصویر رو بر می گردونه ...)

    پس من ابتدا نوع خروجی این صفحه رو Clear کردم و بعد خروجی صفحه رو یک عکس از نوع Jpeg مشخص کرده ام.


    (زیاد فکر این کد ها رو نکنین ، در ادامه کامل می فهمین که کارشون چیه)




    - - - - - - - - - - - - - - - - - -


    کلاس من یک تابع با نام MakePic داره که یه عالمه ورودی از شما می گیره و میره یک عکس می سازه و درون یک Property از نوع عکس با نام Image قرارش میده.



    ورودی های این تابع به ترتیب بصورت زیر است :



    1. طول تصویر (پهنای تصویر)
    2. عرض تصویر (ارتفاع تصویر)
    3. رنگ بک گراند تصویر
    4. رنک متن تصویر (ForeColor)
    5. تعداد کاراکترهای تصویر (می خواین عبارت امنیتی داخل تصویرتون چند کاراکتری باشه )
    6. اندازه فونت
    7. اسم فونت
    8. استایل فونت (bold , italic یا ...)
    9. نوع عبارت امنیتی تصویرتون
    10. یک List از نوع جنریک Color از شما میگیره که رنگ خطوط نویز داخل تصویرتون بصورت رندوم از بین این رنگ ها انتخاب میشه


    توضیح ورودی نهم :

    در این قسمت یک enum از شما میگیره که می تونین بوسیله اون مشخص کنین که عبارت امنیتی داخل تصویرتون شامل کدوم یکی از اینا باشه :


    • فقط عدد
    • فقط حروف بزرگ
    • فقط حروف کوچک
    • عدد و حروف بزرگ
    • عدد و حروف کوچک
    • عدد و حروف برزرگ و حروف کوچک (بیشترین ضریب امنیت)


    خوب می بینین که من نوع عدد و حروف کوچک رو انتخاب کردم

    - - - - - - - - - - - - - - - - - -


    تابع MakePic یک رشته تصادفی می سازه و بعد باهاش یک عکس می سازه و در آخر رشته رو بصورت خروجی برمیگردونه


    من رشته خروجی تابع رو میگیرم و میریزم توی یک سشن


    بعد عکس رو بصورت خروجی صفحه بر میگردونم


    و در پایان کلاس رو Dispose می کنم تا خیالم راحت بشه که هیچ اطلاعاتی از عکسم روی رم سرور نمونده


    و تمام


    - - - - - - - - - - - - - - - - - -

    حالا یک صفحه جدید توی پروژم اضافه می کنم و بعد یک فرم ثبت نام توش می سازم .

    در بخش امنیتی فرمم یک تگ img و یک TextBox و یک ImageButton بدین صورت قرار میدم :


    PHP Code:
     <img alt="" src="SecImage.aspx"/>         
    <
    asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/image/refresh.png" 
        
    onclick="ImageButton1_Click" />
    <
    br/>


    <
    asp:TextBox ID="CapchaTBox" runat="server"></asp:TextBox><br/>


    <
    asp:Button ID="Button1" runat="server" Text="ورود" Height="23px" Width="105px" 
        
    onclick="Button1_Click" /> 
    دقت کنین که من یک تگ img معمولی گذاشتم و
    در خصوصیت src اون آدرس صفحه قبلیم رو گذاشتم.

    نتیجه این میشه که با هر بار لود شدن صفحه ، یک تصویر امنیتی در این تگ نمایش داده خواهد شد.

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

    تو رویداد کلیک این دکمه داریم :
    PHP Code:
     Response.Redirect("~/Default.aspx"); 
    می بینین که کار خاصی انجام ندادم و فقط Response به صفحه جاری کردم (Default.aspx اسم همین صفحه ای است که فرم ثبت نامم توشه)

    در آخر یک Textbox گذاشتم که کاربر عبارت امنیتی که توی تصویر می بینه رو توش بنویسه ...


    در پایان هم که دکمه ثبت اطلاعات فرم قرار داره که توی رویداد کلیکش :
    PHP Code:
    ​if (Session["randomStr"].ToString().ToLower() == CapchaTBox.Text.ToLower()){
     
    Response.Write("Successfull");


     
    // you can do somthing .... 
     // for example : you can save form data to database ... 




    }
    else
    {
     
    Response.Write("Error");



    برای من بزرگی و کوچکی حروف مهم نیست .... (نمی خوام بخش امنیتی فرمم به بزرگی و کوچکی حروف حساس باشه ) پس کل متن تکست باکس رو کوچک می کنم و کل اطلاعات داخل سشنم رو هم کوچک می کنم و بعد با هم مقایسشون می کنم و اگر مساوی بودن ، یعنی کاربر کد رو درست وارد کرده و ....

    منبع:
    [مشاهده ی لینک ها فقط برای اعضا امکان پذیر است. ]

  2. #22
    تازه وارد
    رشته
    مهندسی کامپیوتر
    تاريخ عضويت
    2014/8
    امتیاز
    17
    پست ها
    6

    پيش فرض

    فيلم آموزش ASP.Net به زبان فارسي از مقدماتي تا پيشرفته را از لينکهاي زير دانلود کنيد
    بعد از ديدن اين آموزش يک طراح سايت حرفه اي خواهيد شد
    [مشاهده ی لینک ها فقط برای اعضا امکان پذیر است. ]
    [مشاهده ی لینک ها فقط برای اعضا امکان پذیر است. ]
    [مشاهده ی لینک ها فقط برای اعضا امکان پذیر است. ]
    [مشاهده ی لینک ها فقط برای اعضا امکان پذیر است. ]
    [مشاهده ی لینک ها فقط برای اعضا امکان پذیر است. ]

  3. تشكر از اين پست


صفحه 3 از 3 نخستنخست 123

تاپیک های مشابه

  1. Pdf آموزش ASP.net
    توسط computrenginneer در تالار ASP.NET
    پاسخ ها: 5
    آخرین ارسال: 2009/8/11, 01:46 PM

برچسب های اين تاپیک

ثبت اين صفحه

ثبت اين صفحه

قوانين ارسال

  • شما نمی‌توانيد تاپيک جديد ارسال كنيد
  • شما نمی‌توانيد پاسخ ارسال كنيد
  • شما نمی‌توانید فایل ضمیمه ارسال كنيد
  • شما نمی‌توانيدنوشته‌های خود را ويرايش كنيد
  •