امنيت برنامه های وب ( بخش سوم )
در
اين مقاله به بررسي 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
فراهم مي نمايد . رويکرد فوق ، روشي ساده به منظور تعريف کاربران مجاز يک برنامه
وب مي باشد . در چنين مواردي ، مديريت سيستم مي تواند بسادگي و در صورت لزوم نام و
رمز عبور کاربران ديگري را به ليست مجاز کاربران ، اضافه نمايد . مکانيزم فوق ، در
مواردي که قصد داشته باشيم ، امکان تعريف نام و رمز عبور را در اختيار کاربران
قرار دهيم ، گزينه مناسبي نبوده و مي بايست از يک فايل و يا بانک اطلاعاتي به
منظور ذخيره سازي اطلاعات کاربران ، استفاده گردد.
بازگشت به فهرست
بازگشت به صفحه نخست