آموزش ASP.Net

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

پیاده سازی امنیت در یک وب سایت دارای جنبه های زیر می باشد:

  • Authentication: (احراز هویت/اعتبار سنجی): به فرایند کسب اطمینان و اعتبار سنجی هویت و اعتبار کاربر اطلاق می گردد. درNET چهار نوع مختلف اعتبار سنجی وجود دارد:
    • Windows Authentication (اعتبار سنجی از طریق windows)
    • Forms Authentication (اعتبار سنجی از طریق فرم(
    • Passport Authentication (اعتبار سنجی از طریق رمز عبور)
    • Custom Authentication
  • Authorization (اعطاء مجوز): فرایندی است که تعیین می کند آیا کاربری با هویت معین مجوز دسترسی به منبع مشخصی را دارد یا خیر؛ به فرایندی گفته می شود که طی آن نقش های مشخصی برای کاربرها تعریف شده سپس به آن ها تخصیص داده می شود.
  • Confidentiality (قابلیت اعتماد): طی این پروسه مجرای ارتباطی (channel) بین مرورگر سرویس گیرنده (client browser) و سرویس دهندۀ وب (web server) رمز گذاری می شود.
  • Integrity (جامعیت): جامعیت داده ها را تظمین می کند. به عنوان مثال می توان به پیاده سازی امضای دیجیتالی (نوعی رمزنگاری نامتقارن) اشاره کرد.

اعتبار سنجی مبتنی بر فرم

احراز هویت کاربر از طریق فرم شامل ویرایش فایل 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>

صفحۀ 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;
}

public void OnLogin(Object src, EventArgs e)
{
   if (authenticate(txtuser.Text, txtpwd.Text))
   {
      FormsAuthentication.RedirectFromLoginPage(txtuser.Text, chkrem.Checked);
   }
   else
   {
      Response.Write("Invalid user name or password");
   }
}

توجه داشته باشید که کلاس FormsAuthentication مسئول اجرای فرایند احراز هویت می باشد.

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

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


پیاده سازی امنیت و احراز هویت از طریق فرم

به منظور راه اندازی احراز هویت کاربر از طریق فرم به موارد زیر نیاز دارید:                               

  • یک پایگاه داده که از فرایند احراز هویت پشتیبانی می کند
  • یک وب سایت که از پایگاه داده استفاده می کند
  • حساب کاربری (user account)
  • Role
  • محدود سازی user و group activity ها
  • یک صفحۀ پیش فرض که وضعیت ثبت ورود (login status) کاربرها و دیگر اطلاعات مربوطه را نمایش دهد
  • یک صفحۀ login که کاربرها با استفاده از بتوانند وارد شده، رمز عبور را بازیابی و یا آن را تغییر دهند

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


مرحله (1): با انتخاب گزینۀ  Website -> ASP.NET Configuration، ابزار Web Application Administration Tool را باز کنید.


مرحله (2): حال روی تب security کلیک کنید.

security tab

مرحله (3): از میان دو گزینۀ پیش رو 'From the Internet' را انتخاب کنید.

authentication type

مرحله (4): اکنون با کلیک روی لینک 'Create Users' تعدادی user ایجاد کنید. چنانچه از پیش role هایی را ویژه ی user ها ایجاد کرده اید، در این مرحله می توانید آن ها را به user مورد نظر اختصاص دهید.

create users link

مرحله (5): یک وب سایت ایجاد کرده، سپس صفحات زیر را به آن اضافه کنید:

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

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

login status control

مرحله (7): یک کنترل LoginView از toolbox انتخاب کرده و آن را زیر کنترل LoginStatus قرار دهید. اینجا می توانید text و دیگر کنترل های دلخواه (hyperlink، button و غیره .. ) را جای گذاری کنید که بسته به وضعیت login کاربر (اینکه وارد شده یا خیر) نمایش داده می شوند. این کنترل دارای دو view template می باشد: Anonymous template و LoggedIn template. اکنون متنی ویژه ی هر view تنظیم کرده که توسط template نمایش داده می شود. توجه داشته باشید که متن باید در ناحیه ی قرمز رنگ تایپ شود.

login view control

مرحله (8):User های اپلیکیشن توسط برنامه نویس ایجاد می شوند. شاید لازم باشد به بازدید کننده ی سایت اجازه دهید یک حساب کاربری برای خود ایجاد کند. برای این منظور کافی است یک لینک زیر کنترل LoginView درج کنید که در صورت کلیک کاربر روی آن به صفحه ی CreateAccount.aspx لینک می شود.

مرحله (9): یک کنترل CreateUserWizard به صفحه ی create account اضافه کنید. Property (خاصیت) ContinueDestinationPageUrl این کنترل را روی Welcome.aspx تنظیم کنید.

createuserwizard control

مرحله (10): صفحۀ Login را ایجاد کنید. یک کنترل login روی صفحه قرار دهید. کنترل LoginStatus به صورت خودکار به Login.aspx لینک می شود. جهت تغییر دادن این حالت پیش فرض، لازم است اصلاحات زیر را در فایل web.config اعمال کنید. برای مثال چنانچه می خواهید صفحه ی login خود را signup.aspx  نام گذاری کنید، باید کدهای زیر را به بخش < authentication >  فایل web.config  اضافه کنید:

<configuration>
   <system.web>
      <authentication mode="Forms">
         <forms loginUrl ="signup.aspx" defaultUrl = “Welcome.aspx” />
      </authentication>
   </system.web>
</configuration>

مرحله (11): گاهی کاربرها رمز عبور خود را فراموش می کنند. کنترل PasswordRecovery به کاربر امکان می دهد به حساب کاربری خود دسترسی پیدا کند.

ابتدا روی کنترل Login کلیک کنید، سپس smart tag آن را باز کرده و گزینه ی 'Convert to Template' را انتخاب کنید. با دستکاری رابط کاربری (UI)، به صورت سفارشی یک کنترل hyperlink زیر دکمۀ login قرار دهید که باید در صورت کلیک کاربر روی آن به PassWordRecovery.aspx لینک شود.

password recovery control

مرحله (12): حال یک کنترل PasswordRecovery روی صفحه password recovery قرار دهید. این کنترل برای ارسال رمز عبور به کاربر نیاز به یک email server دارد.

password recovery control 2

مرحله (13): در صفحۀ Welcome.aspx یک لینک به ChangePassword.aspx در template LoggedIn کنترلLoginView اضافه کنید.

 

change password control

 

مرحله (14): یک کنترل ChangePassword روی صفحه ی change password قرار دهید. این کنترل همان طور که در تصویر زیر مشاهده می کنید دارای دو view می باشد:

change password control 2

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

به منظور ایجاد role، به Web Application Administration Tools بازگشته و روی تب Security کلیک کنید. با کلیک روی 'Create Roles'، تعدادی role برای application خود ایجاد کنید.

web application administration

روی لینک 'Manage Users' کلیک کرده و role ها را به user های مربوطه تخصیص دهید.

manage users

 

IIS Authentication  (اعتبار سنجی و سرویس های اطلاعات اینترنتی):  SSL

SSL  سرنام Secure Socket Layer می باشد. SSL پروتکلی است که اتصال امن را تظمین می کند.

با استفاده از SSL مرورگر تمامی داده های ارسال شده به server را رمزگذاری کرده و کلیه ی اطلاعاتی که از سرور می آید را رمز گشایی می کند.همزمان سرور کلیه ی داده های ارسال شده به مرورگر و دریافت شده از آن را رمز گذاری و رمزگشایی می کند.

URL یک اتصال امن به جای HTTP با HTTPS آغاز می شود. مرورگری که از اتصال امن استفاده می کند، یک قفل کوچ بر روی پنجره ی خود نمایش می دهد. هنگامی که مرورگر سعی می کند طی یک اتصال ایمن و با استفاده از پروتکل SSL با server ارتباط برقرار کند، سرور با ارسال digital certificate (گواهی دیجیتال) خود را احراز هویت و اعتبار سنجی می کند.


جهت استفاده از SSL، باید یک گواهی دیجیتال امن از مرجع صدور گواهی دیجیتال (Certification Authority) خریداری کرده و آن را روی سرور وب خود نصب کنید. زیر برخی از مرجع صدور گواهی دیجیتال معروف و قابل اطمینان را مشاهده می کنید:

  • verisign.com
  • geotrust.com
  • thawte.com

SSL به صورت پیش فرض در تمامی مرورگرها و سرورهای اصلی وجود دارد. به منظور فعال سازی آن، کافی است digital certificate (گواهی دیجیتال) را نصب کنید. strengthگواهی دیجیتال های مختلف بر طول کلید تولید شده به هنگام رمزگذاری (encryption) بستگی دارد، به گونه ای که هرچه طول کلید ایجاد شده بیشتر باشد، گواهی دیجیتال نیز امن تر بوده و در نتیجه اتصال ایمن تری برقرار خواهد شد.

Strength

شرح

40 bit

اکثر مرورگرها از آن پشتیبانی می کنند ولی رمزگشایی یا شکستن آن به مراتب آسان تلقی می گردد.

56 bit

در مقایسه با 40-bit از امنیت بیشتری برخوردار می باشد.

128 bit

رمز گشایی و شکستن آن بسیار دشوار است. کلیه ی مرورگرها از آن پشتیبانی نمی کنند.

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش ASP.Net

Learn ASP.Net

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...