تبلیغات
آموزشASP.NET - امنیت برنامه های وب ( بخش سوم )
 
فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 
پنجشنبه 11 فروردین 1390 :: نویسنده : ارش کاکاوند

در بخش سوم  این مقاله به بررسی Forms  Authentication خواهیم پرداخت .
همانگونه که در بخش اول این مقاله اشاره گردید ، برنامه های وب ASP.NET از سه روش عمده به منظور تائید کاربران استفاده می نمایند :

  •  Windows  Authentication

  •  Forms        Authentication

  •  Passport   Authentication

در Forms Authentication ، برنامه IIS مسئولیتی را در ارتباط با تائید کاربران برعهده نگرفته و تنظیمات امنیتی IIS در رابطه با برنامه وب ، دستیابی Anonymous می باشد . فرآیند تائید کاربران در روش فوق، بصورت زیر است :

  • زمانیکه سرویس گیرنده درخواست یک صفحه ایمن را می نماید ، IIS کاربر را به عنوان Anonymous، تائید و در ادامه درخواست وی را برای ASP.NET ارسال می نماید .

  • ASP.NET ، بررسی لازم در خصوص وجود یک کوکی خاص بر روی کامپیوتر سرویس گیرنده را انجام خواهد داد .

  • در صورتیکه کوکی ، موجود نبوده  و یا غیرمعتبر باشد ، ASP.NET درخواست کاربر را نادیده گرفته و برای وی یک صفحه Logon را ارسال می نماید ( مثلا" Login.aspx ).

  • کاربر اطلاعات لازم ( نام و رمز عبور ) را در صفحه Logon.aspx ( به عنوان نمونه ) درج و در ادامه دکمه Submit موجود بر روی فرم را به منظور ارسال اطلاعات برای سرویس دهنده ، فعال می نماید.

  • IIS ، مجددا" کاربر را به عنوان Anonymous، تائید و درخواست وی را برای ASP.NET ارسال می نماید .

  • ASP.NET ، تائید کاربر را بر اساس اطلاعات ارسالی ( نام و رمز عبور ) انجام و یک کوکی را ایجاد می نماید .

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

    فرآیند فوق را می توان به دو حالت متفاوت تعمیم و مورد توجه قرار داد  : 

    •  حالت اول : درخواست یک صفحه ایمن از سرویس دهنده ، توسط یک کاربر غیرمجاز و تائید نشده
      مرحله اول : پس از درخواست یک سرویس گیرنده برای دستیابی به یک صفحه ایمن ، درخواست ارسالی وی در ابتدا توسط IIS بررسی و با توجه به اینکه تنظیمات IIS بصورت Anonymous پیکربندی شده تا امکان استفاده از Forms Authentication فراهم گردد ، درخواست کاربر ، مستقیما" برای ماژول ASP.NET Forms
      Authentication ارسال می گردد .
      مرحله دوم : ASP.NET ، بررسی لازم در خصوص وجود ( داشتن ) یک کوکی
      Authentication را انجام خواهد داد . با توجه به اینکه کاربر اولین مرتبه است که  درخواست اطلاعاتی را نموده و دارای یک کوکی نمی باشد ،  سرویس گیرنده به  صفحه Logon ، هدایت می گردد .
      مرحله سوم : کاربراطلاعات ضروری ( نام و رمز عبور ) خود را در صفحه Logon درج و پس ازارسال آنان ،فرآیند بررسی اطلاعات ارسالی آغاز می گردد. در یک برنامه بزرگ ، بررسی اطلاعات کاربر از طریق یک بانک اطلاعاتی شامل مشخصات کاربران انجام می شود .
      مرحله چهارم : در صورتیکه اطلاعات ارسالی کاربر ( نام و رمز عبور ) ، پس از بررسی توسط برنامه وب ، معتبر شناخته نگردند ، مجوز دستیابی برای کاربر صادر نشده و امکان دستیابی وی  سلب می گردد .
      مرحله پنجم : در صورتیکه پس از بررسی اطلاعات ارسالی، اعتبار وصحت آنان تائید گردد ، یک کوکی تائید ایجاد و در ادامه به کاربر مجوز لازم به منظور دستیابی به صفحه ، اعطاء می گردد .(هدایت کاربر به  صفحه درخواست  اولیه ) .

    • حالت دوم : درخواست یک صفحه ایمن از سرویس دهنده ، توسط یک کاربر مجاز و تائید شده 
      مرحله اول : پس از درخواست یک صفحه ایمن توسط سرویس گیرنده ،  کوکی
      Authentication  بهمراه درخواست وی برای سرویس دهنده ، ارسال می گردد.
      مرحله دوم :درخواست ارسالی توسط سرویس گیرنده در ابتدا توسط IIS دریافت و با توجه به تنظیمات انجام شده ( دسیتابی Anonymous ) ، درخواست وی مستقیما" برای ASP.NET Forms
      Authentication ارسال می گردد .
      مرحله سوم : ماژول ASP.NET Forms
      Authentication ، بررسی لازم در خصوص کوکی را انجام و در صورتیکه کوکی معتبر باشد ، سرویس گیرنده تائید و امکان دستیابی و مشاهده صفحه وب درخواستی برای وی ، فراهم می گردد . 

    در روش Forms Authentication ، بصورت اتوماتیک یک فرم وب طراحی شده به منظور اخذ اطلاعات مربوط به نام و رمز عبور کاربران ، نمایش داده می شود . کد مرتبط با فرم وب ، عملیات تائید و معتبرسازی کاربر را بر اساس  لیست ذخیره شده در فایل Web.Config برنامه و یا از طریق یک بانک اطلاعاتی جداگانه ، انجام می دهد. مزیت مهم Forms Authentication ، عدم ضرورت عضویت کاربران در  Domain شبکه به منظور دستیابی به برنامه وب ، می باشد .

    فعال نمودن Forms Authentication
    به منظور استفاده از روش فوق ، می بایست مراحل زیر را دنبال نمود :

    • مقداردهی  Authentication mode در فایل Web.config به Forms

    • ایجاد یک فرم وب به منظور اخذ اطلاعات کاربران ( Logon Page )

    • ایجاد یک فایل و یا بانک اطلاعاتی به منظور ذخیره نام و رمز عبور کاربران

    • نوشتن کد لازم به منظور افزودن کاربر جدید به فایل و یا بانک اطلاعاتی کاربران 

    • نوشتن کد لازم به منظور تائید کاربران با استناد به فایل و یا بانک اطلاعاتی کاربران

    Forms Authentication ، از کلاس های موجود در namespace با نام System.Web.Security  استفاده می نماید . به منظور استفاده از کلاس های فوق، می بایست در ویژوال بیسک دات نت از عبارت Imports و در ویژوال سی شارپ از Using استفاده گردد ( در ابتدای هر ماژول که عملیات تائید را انجام خواهد داد :  Imports System.Web.Security ) .

     مقداردهی  Authentication mode
    نوع تائید کاربران در یک برنامه وب ، می بایست با استفاده از عنصر <authentication> در فایل Web.config مشخص گردد. به منظور تنظیم برنامه مورد نظر خود برای استفاده از Forms Authentication ، تغییرات زیر را در فایل Web.Config ، اعمال می نمائیم :

    Web.Config setting for Forms Authentication

     <authentication mode="Forms">
        <forms loginUrl = Login.aspx" >
              <credentials passwordFormat = "Clear" >
                      <user name = "Ali"
          Password ="110" />
                      <user name = "Kaveh" Password
    ="111" />
             </credentials>
        </forms>
    </authentication>

    کد فوق، یک نوع ساده از تائید کاربران به روش Forms را نشان می دهد . در این رابطه ، اغلب از تعاریف و تنظیمات پیش فرض و یک لیست کاربران مجاز، استفاده شده است. از عناصر متفاوتی در ارتباط با  Forms Authentication  در فایل Web.Config استفاده می گردد.هر یک از عناصر دارای خصلت های خاص خود می باشند  : 

    •  عنصر  <authentication> 
      خصلت Mode ، با استفاده از خصلت فوق ، روش تائید و شناسائی کاربران مشخص می گردد. با مقدار دهی خصلت فوق به Forms ، روش Forms Authentication انتخاب خواهد شد.

    • عنصر <forms> 
      خصلت name . از خصلت فوق  به منظور مشخص نمودن نام کوکی که اطلاعات مربوط به نام و رمز عبور را ذخیره می نماید ، استفاده می شود . مقدار پیش فرض ، authaspx .  می باشد . در صورتیکه بیش از یک برنامه بر روی سرویس دهنده از روش Forms Authentication استفاده می نمایند ، می بایست برای هر یک از آنان نام منحصربفردی در نظر گرفته شود .
      خصلت loginUrl .از خصلت فوق به منظور مشخص نمودن نام فرم وب Login برای کاربران تائید نشده ، استفاده می گردد . مقدار پیش فرض خصلت فوق، Default.aspx است .
      خصلت protection . با استفاده از خصلت فوق روش حفاظت کوکی Authentication که بر روی کامپیوتر سرویس گیرنده ذخیره می گردد ، مشخص خواهد شد.  مقدار پیش فرض خصلت فوق ، All بوده  که عملیات رمزنگاری و بررسی اعتبار و صحت داده  در رابطه با آن اعمال می گردد. سایر گزینه های موجود در این راستا ، Encryption,Validation و None می باشد . 
      خصلت timeout . با استفاده از خصلت فوق ، مدت زمان نگهداری کوکی Authentication بر روی ماشین کاربر مشخص می گردد . مقدار پیش فرض 30 دقیقه است . ASP.NET ، پس از دریافت یک درخواست جدید توسط کاربر و مشروط به گذشت بیش از نصف زمان تعریف شده ، کوکی را تجدید ( Renew ) خواهد کرد  .
      خصلت path . با استفاده از خصلت فوق ، مسیر مورد نظر به منظور ذخیره سازی کوکی بر روی ماشین کاربر مشخص می گردد . مقدار پیش فرض ، "\" است  .

    • عنصر <credentials>
      خصلت passwordFormat ، با استفاده از خصلت فوق ، الگوریتم لازم به منظور رمزنگاری رمز عبور کاربر ، مشخص می گردد . مقدار پیش فرض ، SHA1 می باشد . سایر گزینه های موجود در این رابطه ، MD5 و Clear ( بدون رمزنگاری ) می باشد .

    • عنصر <users> 
      خصلت name ، با استفاده از خصلت فوق ، نام کاربر مشخص می گردد.
      خصلت password ، با استفاده از خصلت فوق ، رمز عبور کاربر مشخص می گردد.

    عنصر <credentilas> ، امکان ذخیره سازی لیست کاربران را در Web.Config فراهم می نماید . رویکرد فوق ، روشی ساده به منظور تعریف کاربران مجاز یک برنامه وب می باشد . در چنین مواردی ، مدیریت سیستم می تواند بسادگی و در صورت لزوم  نام و رمز عبور کاربران دیگری را به لیست مجاز کاربران ، اضافه نماید . مکانیزم فوق ، در مواردی که قصد داشته باشیم ، امکان تعریف نام و رمز عبور را در اختیار کاربران قرار دهیم ، گزینه مناسبی نبوده و می بایست از یک فایل و یا بانک اطلاعاتی به منظور ذخیره سازی اطلاعات کاربران ، استفاده گردد.

    در بخش چهارم این مقاله با نحوه ایجاد بانک اطلاعاتی ، درج مشخصات کاربران و تائید آنان با استناد به اطلاعات مندرج در بانک اطلاعاتی ، خواهیم پرداخت .

  • آموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآموزش asp.netآم





  • نوع مطلب :
    برچسب ها :
    لینک های مرتبط :


    یکشنبه 26 شهریور 1396 07:59 ب.ظ
    Appreciating the hard work you put into your site and in depth information you provide.
    It's awesome to come across a blog every once in a
    while that isn't the same old rehashed information. Excellent read!
    I've saved your site and I'm adding your RSS feeds to my Google account.
    شنبه 18 شهریور 1396 03:38 ق.ظ
    If some one needs to be updated with most up-to-date technologies afterward he must be
    pay a visit this web page and be up to date daily.
    سه شنبه 14 شهریور 1396 07:00 ب.ظ
    Asking questions are really nice thing if you are not understanding something totally, except this article gives pleasant
    understanding yet.
    دوشنبه 25 اردیبهشت 1396 08:27 ق.ظ
    My developer is trying to persuade me to move to .net from PHP.
    I have always disliked the idea because of the costs.
    But he's tryiong none the less. I've been using WordPress on a variety of
    websites for about a year and am concerned
    about switching to another platform. I have heard very good things about blogengine.net.
    Is there a way I can import all my wordpress posts into it?
    Any help would be really appreciated!
    یکشنبه 27 فروردین 1396 10:56 ب.ظ
    I do not know if it's just me or if perhaps everyone else encountering issues with your blog.
    It appears like some of the written text within your posts are running off the screen. Can somebody else please comment and let me
    know if this is happening to them too? This could be a problem with my browser because I've had this happen previously.

    Many thanks
    چهارشنبه 23 فروردین 1396 06:36 ب.ظ
    Hi, I check your new stuff daily. Your story-telling
    style is witty, keep doing what you're doing!
     
    لبخندناراحتچشمک
    نیشخندبغلسوال
    قلبخجالتزبان
    ماچتعجبعصبانی
    عینکشیطانگریه
    خندهقهقههخداحافظ
    سبزقهرهورا
    دستگلتفکر


    درباره وبلاگ

    سلام من آرش کاکاوند دانشجوی رشته کامپیوتر هستم و ورود شما رابه دنیای aspخوش امدمیگم.حتما نظر بدین تا من کارم رو بهتر ادامه بدم

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








    جستجو

    آمار وبلاگ
    کل بازدید :
    بازدید امروز :
    بازدید دیروز :
    بازدید این ماه :
    بازدید ماه قبل :
    تعداد نویسندگان :
    تعداد کل پست ها :
    آخرین بازدید :
    آخرین بروز رسانی :