1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش پیاده سازی امنیت در سایت – ASP.NET

شروع موضوع توسط AftabGardoon ‏8/2/19 در انجمن ASP.NET

Tags:
  1. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    پیاده سازی امنیت در یک وب سایت دارای جنبه های زیر می باشد:


    1.Authentication : (احراز هویت/اعتبار سنجی): به فرایند کسب اطمینان و اعتبار سنجی هویت و اعتبار کاربر اطلاق می گردد. در ASP.NET چهار نوع مختلف اعتبار سنجی وجود دارد:


    • Windows Authentication (اعتبار سنجی از طریق windows)
    • Forms Authentication (اعتبار سنجی از طریق فرم)
    • Passport Authentication (اعتبار سنجی از طریق رمز عبور)
    • Custom Authentication

    .2 Authorization (اعطاء مجوز): فرایندی است که تعیین می کند آیا کاربری با هویت معین مجوز دسترسی به منبع مشخصی را دارد یا خیر؛ به فرایندی گفته می شود که طی آن نقش های مشخصی برای کاربرها تعریف شده سپس به آن ها تخصیص داده می شود.


    3. Confidentiality (قابلیت اعتماد): طی این پروسه مجرای ارتباطی (channel) بین مرورگر سرویس گیرنده (client browser) و سرویس دهنده ی وب (web server) رمز گذاری می شود.


    4. Integrity (جامعیت): جامعیت داده ها را تظمین می کند. به عنوان مثال می توان به پیاده سازی امضای دیجیتالی (نوعی رمزنگاری نامتقارن) اشاره کرد.
     
  2. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    اعتبار سنجی مبتنی بر فرم

    احراز هویت کاربر از طریق فرم شامل ویرایش فایل web.config و افزودن یک صفحه ی ثبت ورود (login page) به همراه کد مجوز یا اعتبار سنجی (authentication code) می باشد.


    فایل web.config را می توان ویرایش کرده و کدهای زیر روی آن نوشت:

    کد:
    < configuration >
     
      < system.web >
        < authentication mode="Forms" >
          < forms loginUrl ="login.aspx"/ >
        < /authentication >
     
        < authorization >
          < deny users="?"/ >
        < /authorization >
      < /system.web >
      ...
      ...
    < /configuration >
     
  3. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    صفحه ی login.aspx که در تکه کد فوق آن را ذکر کردیم می تواند code behind file زیر را به همراه اسم کاربری (username) و رمز عبور (password) برای احراز هویت به صورت hard code شده در خود داشته باشد.

    کد:
    protected bool authenticate(String uname, String pass)
        {
            if (uname == "Tom")
            {
                if (pass == "tom123")
                    return true;
            }
            if (uname == "Dick")
            {
                if (pass == "dick123")
                    return true;
            }
            if (uname == "Harry")
            {
                if (pass == "har123")
                    return true;
            }
            return false;
        }
     
        protected void OnLogin_Click(object sender, EventArgs e)
        {
            if (authenticate(txtuser.Text.Trim(), txtpwd.Text.Trim()))
            {
                FormsAuthentication.RedirectFromLoginPage(txtuser.Text, chkrem.Checked);
            }
            else
            {
                Response.Write("Invalid user name or password");
            }
     }
     
  4. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    توجه داشته باشید که کلاس FormsAuthentication مسئول اجرای فرایند احراز هویت می باشد.

    با این وجود Visual Studio به شما امکان می دهد پروسه های ایجاد user، احراز هویت و اعطاء مجوز (authorization) را بدون نوشتن هیچ گونه کد و تنها از طریق ابزار Web Site Administration انجام دهید.


    ابزار نام برده به برنامه نویس اجازه ی ایجاد user و تخصیص role یا نقش معین به user ایجاد شده را می دهد.


    جدا از امکانات یاد شده ASP.NET دارای مجموعه کنترل های login آماده و از پیش ساخته می باشد که تمامی کارهای لازم را برای شما انجام می دهند.
     
  5. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    پیاده سازی امنیت و احراز هویت از طریق فرم
    به منظور راه اندازی احراز هویت کاربر از طریق فرم به موارد زیر نیاز دارید:


    یک پایگاه داده که از فرایند احراز هویت پشتیبانی می کند


    یک وب سایت که از پایگاه داده استفاده می کند


    حساب کاربری (user account)
     
  6. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    Role
    محدود سازی user و group activity ها

    یک صفحه ی پیش فرض که وضعیت ثبت ورود (login status) کاربرها و دیگر اطلاعات مربوطه را نمایش دهد


    یک صفحه ی login که کاربرها با استفاده از بتوانند وارد شده، رمز عبور را بازیابی و یا آن را تغییر دهند


    جهت ایجاد user جدید مراحل زیر را دنبال کنید:


    با انتخاب گزینه ی Website -> ASP.NET Configuration، ابزار Web Application Administration Tool را باز کنید.


    حال روی تب security کلیک کنید.

    [​IMG]
     
  7. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    از میان دو گزینه ی پیش رو 'From the Internet' را انتخاب کنید.

    [​IMG]
     
  8. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    اکنون با کلیک روی لینک 'Create Users' تعدادی user ایجاد کنید. چنانچه از پیش role هایی را ویژه ی user ها ایجاد کرده اید، در این مرحله می توانید آن ها را به user مورد نظر اختصاص دهید.

    [​IMG]
     
  9. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    یک وب سایت ایجاد کرده، سپس صفحات زیر را به آن اضافه کنید:


    • Welcome.aspx
    • Login.aspx
    • CreateAccount.aspx
    • PasswordRecovery.aspx
    • ChangePassword.aspx

    یک کنترل LoginStatus از بخش login toolbox روی صفحه ی Welcome.aspx قرار دهید. دارای دو قالب (template) می باشد: LoggedIn و LoggedOut . در قالب LoggedOut، یک لینک login وجود دارد و در قالب LoggedIn یک لینک logout مشاهده می کنید. می توان text properties کنترل مورد نظر را از طریق پنجره ی Properties تغییر داد.

    [​IMG]
     
  10. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    یک کنترل LoginView از toolbox انتخاب کرده و آن را زیر کنترل LoginStatus قرار دهید. اینجا می توانید text و دیگر کنترل های دلخواه (hyperlink، button و غیره .. ) را جای گذاری کنید که بسته به وضعیت login کاربر (اینکه وارد شده یا خیر) نمایش داده می شوند. این کنترل دارای دو view template می باشد: Anonymous template و LoggedIn template. اکنون متنی ویژه ی هر view تنظیم کرده که توسط template نمایش داده می شود. توجه داشته باشید که متن باید در ناحیه ی قرمز رنگ تایپ شود.

    [​IMG]