امنيت برنامه های وب ( بخش دوم )
اين مطلب از طريق سايت شرکت سخاروش در اختيار شما گذاشته شده است .

امنيت برنامه های وب ( بخش دوم )

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

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

مهمترين مزيت روش Windows Authentication ، استفاده مشترک از يک مدل امنيتی به منظور دستيابی به منابع موجود در شبکه و برنامه های وب است . پس از تعريف  و اعطای مجوزهای لازم به کاربر ،  امکان دستيابی وی به منابع موجود در شبکه و برنامه های وب بر اساس يک سيستم امنيتی مشابه و يکسان ، فراهم می گردد .
در زمان ايجاد يک پروژه جديد برنامه وب توسط ويژوال استوديو دات نت ، از روش Windows Authentication بصورت پيش فرض به منظور تائيد کاربران استفاده می گردد .پس از ايجاد يک پروژه جديد برنامه وب در ويژوال استوديو دات نت  ، فايل Web.Config بصورت اتوماتيک ايجاد می گردد . ( يک فايل XML که اطلاعات متفاوتی را در ارتباط با پيکربندی رنامه وب در خود ذخيره می نمايد ) . محتوی پيش فرض اين فايل بصورت زير است ( صرفا" بخشی که با موضوع اين مقاله ارتباط دارد ، منعکس می گردد ) :

Web.Config default setting

 <authentication mode="Windows" />
<authorization>
     <allow users="*" />  <!-- تمامی کاربران  -->
</authorization>

در بخش مربوط به عنصر authentication  ، سياست تائيد کاربران برنامه های وب مخشص می گردد . برای مشخص نمودن سياست فوق از خصلت mode  مربوط به عنصر authentication ، استفاده شده که  می تواند يکی از مقادير : Windows , Forms ,Passport و يا None را دارا باشد . در بخش authorization ، سياست های مربوط به کاربران مجاز برنامه وب مشخص می گردد . در اين رابطه می توان ، امکان دستيابی و يا عدم دستيابی به برنامه های وب را با مشخص نمودن کاربران و يا با توجه به وظايف آنان ، فراهم نمود. ( استفاده از کاراکتر " * " ، به معنی همه کاربران بوده و کاراکتر "؟" به منزله کاربران ناشناس و غيرمجاز است) .  برای آشنائی با عملکرد روش Windows Authentication ، مراحل زير را دنبال می نمائيم :

Authorization element

<authorization>
     <deny users="?" />
</authorization>

HTML Table in Startup web form

 <TABLE id="tblUser">
<tr>
  <TD><STRONG>آيا کاربر تائيد شده است ؟</STRONG></TD>
  <TD><Span runat="server" id="spnAuthenticated"></Span></TD>
</tr>
<tr>
  <TD><STRONG>نام کاربر </STRONG></TD>
  <TD><Span runat="server" id="spnUserName"></Span></TD>
</tr>
<tr>
  <TD><STRONG>نوع تائيد کاربر</STRONG></TD>
  <TD><Span runat="server" id="spnAuthenticationtype"></Span></TD>
</tr>
</TABLE>

Web form's code-behind file

Private Sub Page_Load( ByVal sender As System.Object,ByVal e As System.EventArgs ) Handles Mybase.Load
   spnAuthenticated.InnerText = User.Identity.IsAuthenticated
   spnUserName .InnerText = User.Identity.Name
   spnAuthenticationType.InnerText = User.Identity.AuthenticationType
End Sub

در صورتيکه نام و رمز عبور درج شده  توسط کاربر با تعاريف انجام شده در Domain شبکه ، مطابقت نمايد ، ASP.NET کاربر را تائيد و مجوز لازم به منظور استفاده از برنامه وب صادر خواهد شد . در اين رابطه ASP.NET ، يک authorization certificate را به شکل يک کوکی صادر که در حين Session کاربر ، نگهداری و از آن استفاده می گردد. Session کاربر، پس از اتمام زمان Time out و يا بستن مرورگر ، خاتمه می يابد . برنامه وب اجرای خود را متناسب با مجوزهای تعريف شده در ارتباط با Account آغاز می نمايد .
روش Windows integrated authentication در يک شبکه مبتنی بر Domain بهتر کار خواهد کرد . شبکه هائی که از Workgroup استفاده می نمايند ( در مقابل استفاده از Domain ) دارای محدوديت های خاص خود به منظور استفاده از ويژگی های امنيتی ، می باشند. شبکه های مبتنی بر Domain ، از يک کنترل کننده Domain به منظور تائيد و معتبرسازی کاربران شبکه ، استفاده می نمايد .
با استفاده از امکانات ارائه شده در فايل Web.Config می توان يک لايه امنيتی مضاعف را ايجاد نمود . دراين راستا ، می توان تنظيمات لازم به منظور دستيابی و يا عدم دستيابی کاربران و يا گروه های خاصی از کاربران را نيز انجام داد .

اعمال محدوديت برای کاربران خاص ( دستيابی و يا عدم دستيابی )
در موارديکه از روش Windows integrated authentication استفاده می گردد ، ASP.NET ، ليست تائيد موجود در فايل Web.Config را به منظور آگاهی از صلاحيت کاربران شبکه برای استفاده ازبرنامه وب ، بررسی می نمايد. کاراکترهای "*" و "؟" دارای معانی خاصی در ليست تائيد می باشند : کاراکتر  "* " ، نشاندهنده تمامی کاربران و کاراکتر "؟"، نشاندهنده کاربران غير مجاز( ناشناس)  می باشد . مثلا" ليست تائيد زير  در Web.Config ، امکان دسـتيابی تمامی کاربران ناشناس به برنامه وب را حذف و می بايست  تمامی کاربران به منظور استفاده از برنامه وب ،تائيد گردند .

Authorization element

<authorization>
     <deny users="?" />
</authorization>

به منظور اعمال محدوديت در دستيابی کاربرانی خاص ،می توان از عنصر <allow> استفاده و اسامی تمامی کاربران مجاز را با صراحت مشخص نمود (اسامی توسط ويرگول از يکديگر تفکيک می گردند) . پس از معرفی کاربران مجاز با استفاده از عنصر <allow> ، می بايست با بکارگيری عنصر <deny> ، امکان دستيابی به برنامه توسط کاربران غير مجاز، سلب می گردد .

Authorization element

<authorization>
 
    <allow users="Ali  Reaz , Reza Ali " />
 
    <deny users="*" />
 </authorization>

ليست مجاز فوق ، امکان دستيابی دو کاربر که اسامی آنان با صراحت مشخص شده است را به برنامه وب خواهد داد. ساير کاربران ، امکان دستيابی به برنامه وب را دارا نخواهند بود ( نقش عنصر deny در مثال فوق )   علاوه بر ليست مجاز فوق که اسامی دو کاربر را مشخص و آنان را برای استفاده از برنامه وب مجاز می نمايد ، دو کاربر فوق ، می بايست دارای Account لازم در Domain شبکه نيز باشند .

تائيد کاربران بر اساس نوع  وظيفه 
برای تائيد کاربران به منظور استفاده از يک برنامه می توان ، مجوزهای لازم را بر اساس وظيفه آنان در سازمان ، صادر و امکان دستيابی و يا عدم دستيابی را برای آنان فراهم نمود. در ويندوز NT و XP ، وظايف به اسامی مپ شده تا  از اين طريق امکان شناسائی گروه های کاربران ، فراهم گردد. ويندوز، چندين گروه را بصورت اتوماتيک از قبل ايجاد می نمايد : Administrators ,Users  و Guests . در اين رابطه می توان از عنصر <roles> در ليست استفاده کنندگان مجاز برنامه وب در فايل Web.Config استفاده و امکان دستيابی به يک برنامه را با توجه به وظايف کاربر ، فراهم نمود. مثلا" ليست زير، امکان دستيابی به برنامه وب را صرفا" برای  کاربرانی که به عنوان  Administrator به شبکه وارد می شوند ، فراهم می نمايد.

Authorization element

<authorization>
   <allow roles ="Administrators" />
   <deny users="*" />
</authorization>

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

Web form's code-behind file

Private Sub Page_Load( ByVal sender As System.Object,ByVal e As System.EventArgs ) Handles Mybase.Load
   spnAuthenticated.InnerText = User.Identity.IsAuthenticated
   spnUserName .InnerText = User.Identity.Name
   spnAuthenticationType.InnerText = User.Identity.AuthenticationType
End Sub

به منظور آگاهی و انجام  عمليات  لازم با توجه به نوع وظيفه کاربر که از  برنامه وب استفاده می نمايد ، می توان از متد IsInRole  شی User ، استفاده نمود .

IsInRole method

If  User.IsInRole("Administrators") Then
   '
انجام عمليات دلخواه 
End If

استفاده از تنظيمات IIS به همراه Windows Authentication
تنظيمات Authorization در فايل Web.Config با تنظيمات انجام شده در IIS با يکديگر Overlap می شوند . در صورتيکه Authorization هم در فايل Web.Config و هم توسط IIS تنظيم شده باشد ، در ابتدا تنظيمات IIS بررسی و در ادامه تنظيمات موجود در فايل Web.Config ، مورد توجه قرار خواهند گرفت. به منظور مشاهده تنظيمات authorization در IIS مراحل زير را دنبال می نمائيم :

AuthenticationType  method

Response.Write(User.Identity.AuthenticationType)

در بخش سوم اين مقاله به بررسی روش  Forms Authentication ، خواهيم پرداخت .


استفاده از اين مطلب  با ذکر منبع و اهداف غيرانتفاعی بلامانع است .
http://www.srco.
ir