| امنیت برنامه های تحت وب |
|
|
|
| نوشته شده توسط مدير سايت | |||||||||||||
| يكشنبه ۲۷ دی ۱۳۸۸ ساعت ۱۱:۱۰ | |||||||||||||
هر برنامه کامپیوتری که برای اجراء در محیط شبکه، طراحی و پیاده سازی می گردد ، می بایست توجه خاصی به مقوله امنیت داشته باشد .برنامه های وب از زیرساخت شبکه ( اینترانت ، اینترانت ) برای ارائه خدمات خود به کاربران استفاده نموده و لازم است نحوه دستیابی کاربران به این نوع از برنامه ها ، کنترل و با توجه به سیاست های موجود ، امکان دستیابی فراهم گردد .در ابتدا می بایست کاربران شناسائی و پس از تائید هویت آنان ، امکان دستیابی به برنامه با توجه به مجوزهای تعریف شده ، فراهم گردد. ASP.NET ( پلات فرم مایکروسافت برای طراحی و پیاده سازی برنامه های وب ) ، از سه روش عمده به منظور شناسائی کاربران و اعطای مجوزهای لازم در جهت دستیابی و استفاده از یک برنامه وب ، استفاده می نماید : Windows Authentication Forms Authentication Passport Authentication در مجموعه مقالاتی که ارائه خواهد شد به بررسی هر یک از روش های فوق در جهت پیاده سازی امنیت در برنامه های وب خواهیم پرداخت . در بخش اول این مقاله ، به بررسی نحوه برخورد ASP.NET با کاربران ناشناس ( Anonymous ) ، روش های متفاوت شناسائی کاربران و پارامترهای لازم در خصوص انتخاب یک استراتژی به منظور شناسائی کاربران با توجه به نوع برنامه ها ، خواهیم پرداخت . شناسائی و تائید کاربران دستیابی از طریق کاربران ناشناس ( Anonymous ) ورود به شبکه ( Logon ) به عنوان مدیریت شبکه اجرای Computer Management ( از طریق : Start | Programs | Administrator Tools ) انتخاب فولدر Users به منظور نمایش لیست کاربران مشاهده گروههائی که Account فوق به عنوان عضوی از آنان می باشد( کلیک بر روی Member of ) . کاربران Anonymous ، بصورت پیش فرض ، عضوی از گروه Guests بوده که دارای مجوزهای اندکی می باشد. ASP.NET از ASP.NET Account ( با توجه به تنظیمات پیش فرض) ، به منظور اجرای برنامه وب استفاده می نماید . بدین ترتیب ، در صورتیکه برنامه ای سعی در انجام عملیاتی نماید که در لیست مجوزهای ASP.NET Account وجود نداشته باشد ، یک مورد خاص امنیتی بوجود آمده و امکان دستیابی آن تائید نخواهد شد. به منظور اعمال محدودیت در دستیابی کاربران ناشناس می توان از تنظیمات مربوط به مجوزهای فایل ویندوز استفاده نمود . برای ایمن سازی ، سرویس دهنده می بایست دارای سیستم فایل NTFS باشد . سیستم های فایل FAT و یا FAT32 ، ایمن سازی در سطح فایل را ارائه نمی نمایند . دستیابی از طریق کاربران تائید شده Windows integrated authentication : در روش فوق ، شناسائی و تائید کاربران بر اساس لیست کاربران تعریف شده بر روی سرویس دهنده انجام خواهد شد. در ادامه با توجه به مجوزها و امتیازات نسبت داده شده به هر Account ، امکان دستیابی و یا عدم دستیابی به منابع موجود بر روی سرویس دهنده ، فراهم می گردد. Forms authentication : در روش فوق ، کاربران به یک فرم وب Logon ، هدایت می گردند . در ادامه ، اطلاعات مربوط به نام و رمز عبور آنان اخذ و فرآیند شناسائی و تائید بر اساس یک لسیت کاربران و یا از طریق یک بانک اطلاعاتی که برنامه حمایت می نماید ، انجام خواهد شد. Passport authentication : در روش فوق ، کاربران جدید به یک سایت که توسط مایکروسافت میزبان شده است ، هدایت می گردند .پس از ریجستر شدن کاربران ، امکان دستیابی آنان به چندین سایت ، فراهم خواهد شد( تمرکز در شناسائی کاربران و استفاده از سایت های متعدد با توجه به تائید بعمل آمده ) . هر یک از رویکردهای فوق ، به همراه روش دستیابی Anonymous ، دارای مزایای مختص به خود بوده و برای نوع خاصی از برنامه های وب ، مناسب می باشند : نوع برنامه : برنامه وب عمومی اینترنت نوع برنامه : برنامه وب اینترانت نوع برنامه : برنامه های وب تجاری نوع برنامه : برنامه های متعدد تجاری
استفاده از Authentication در فایل های HTM و یا HTML انتخاب فولدر شامل برنامه وب و Properties از طریق Action Menu . در ادامه برنامه IIS ، جعبه محاوره ای Properties را نمایش خواهد داد . بر روی Directory Tab کلیک نموده و در ادامه گزینه Configuration را انتخاب می نمائیم . IIS در ادامه جعبه محاوره ای Application Configuration را نمایش خواهد داد بر روی دکمه Add کلیک نموده و در ادامه IIS جعبه محاوره ای Add/Edit Application Extension Mapping را نمایش خواهد داد . بر دکمه Browse کلیک نموده و فایل aspnet_isapi.dll را انتخاب می نمائیم .فایل فوق در دایرکتوری Windows Microsoft .Net Framework قرار داشته و مسیر آن مشابه زیر است : Path for aspnet_isapi.dll C:\windows\Microsoft.NET\Framework\versionnumber\aspnet_isap i.dll htm. را در فیلد File Extension تایپ می نمائیم . مراحل فوق ، برای فایل های با انشعاب html ، تکرار می گردد. Windows Authentication Forms Authentication Passport Authentication در Windows Authentication ، برنامه های وب مسئولیتی را در ارتباط با تائید کاربران برعهده نگرفته و این وظیفه تماما” به سیستم عامل ویندوز ، واگذار می گردد. فرآیند تائید کاربران در روش فوق، بصورت زیر است : کاربر درخواستی مبنی بر دریافت یک صفحه وب ایمن را از برنامه وب ، می نماید . پس از دریافت درخواست توسط سرویس دهنده وب ، IIS عملیات بررسی صلاحیت کاربر را انجام خواهد داد . در این راستا ، اطلاعات ارائه شده توسط کاربر در زمان logon ( نام و رمز عبور) ، با اطلاعات موجود بر روی سرویس دهنده وب و یا Domain ، مقایسه می گردد . در صورتیکه پس از بررسی مدارک ارائه شده توسط کاربر ( نام و رمز عبور ) ، وی به عنوان کاربر غیر مجاز تشخیص داده شود ، درخواست وی نادیده گرفته خواهد شد . کامپیوتر سرویس گیرنده ، یک جعبه محاوره ای Logon را تولید و از کاربر درخواست درج اطلاعات مورد نیاز ( نام و رمز عبور ) ، می گردد . پس از درج اطلاعات درخواستی توسط کاربر و ارسال آنان برای سرویس دهنده ، مجددا” IIS بررسی لازم در خصوص صحت آنان را انجام خواهد داد . در صورتیکه صحت اطلاعات ارسالی کاربر ( نام و رمز عبور ) تائید گردد ، IIS درخواست اولیه کاربر را به سمت برنامه وب هدایت می نماید . در آخرین مرحله و پس از بررسی و تائید صلاحیت کاربر ، صفحه وب درخواستی برای کاربر ارسال می گردد . مهمترین مزیت روش Windows Authentication ، استفاده مشترک از یک مدل امنیتی به منظور دستیابی به منابع موجود در شبکه و برنامه های وب است . پس از تعریف و اعطای مجوزهای لازم به کاربر ، امکان دستیابی وی به منابع موجود در شبکه و برنامه های وب بر اساس یک سیستم امنیتی مشابه و یکسان ، فراهم می گردد .
Web.Config default setting
در بخش مربوط به عنصر authentication ، سیاست تائید کاربران برنامه های وب مخشص می گردد . برای مشخص نمودن سیاست فوق از خصلت mode مربوط به عنصر authentication ، استفاده شده که می تواند یکی از مقادیر : Windows , Forms ,Passport و یا None را دارا باشد . در بخش authorization ، سیاست های مربوط به کاربران مجاز برنامه وب مشخص می گردد . در این رابطه می توان ، امکان دستیابی و یا عدم دستیابی به برنامه های وب را با مشخص نمودن کاربران و یا با توجه به وظایف آنان ، فراهم نمود. ( استفاده از کاراکتر ” * ” ، به معنی همه کاربران بوده و کاراکتر “؟” به منزله کاربران ناشناس و غیرمجاز است) . برای آشنائی با عملکرد روش Windows Authentication ، مراحل زیر را دنبال می نمائیم : بخش authorization در فایل Web.Config را بصورت زیر تغییر می نمائیم : Authorization element
تگ های زیر را که یک جدول HTML را تعریف می نمایند ، در فرم وب شروع برنامه وب ، قرار می دهیم : HTML Table in Startup web form
به حالت Design view سوئیچ نموده و کد زیر را در فایل Code Behind فرم وب شروع برنامه ، قرار می دهیم : Web form’s code-behind file Private Sub Page_Load( ByVal sender As System.Object,ByVal e As System.EventArgs ) Handles Mybase.Load پس از اجرای پروژه بصورت محلی ، ASP.NET تائید کاربر را بر اساس نام و رمز عبوری که برای ورود به ویندوز استفاده شده است ، انجام خواهد د اد . پس از اجرای پروژه از راه دور ( مثلا” دستیابی از طریق اینترنت ) ، ASP.NET یک جعبه محاوره ای رادر مرورگر نمایش داده تا از طریق آن نام و رمز عبور کاربر دریافت گردد . در صورتیکه نام و رمز عبور درج شده توسط کاربر با تعاریف انجام شده در Domain شبکه ، مطابقت نماید ، ASP.NET کاربر را تائید و مجوز لازم به منظور استفاده از برنامه وب صادر خواهد شد . در این رابطه ASP.NET ، یک authorization certificate را به شکل یک کوکی صادر که در حین Session کاربر ، نگهداری و از آن استفاده می گردد. Session کاربر، پس از اتمام زمان Time out و یا بستن مرورگر ، خاتمه می یابد . برنامه وب اجرای خود را متناسب با مجوزهای تعریف شده در ارتباط با Account آغاز می نماید . اعمال محدودیت برای کاربران خاص ( دستیابی و یا عدم دستیابی ) Authorization element
به منظور اعمال محدودیت در دستیابی کاربرانی خاص ،می توان از عنصر استفاده و اسامی تمامی کاربران مجاز را با صراحت مشخص نمود (اسامی توسط ویرگول از یکدیگر تفکیک می گردند) . پس از معرفی کاربران مجاز با استفاده از عنصر ، می بایست با بکارگیری عنصر ، امکان دستیابی به برنامه توسط کاربران غیر مجاز، سلب می گردد . Authorization element
لیست مجاز فوق ، امکان دستیابی دو کاربر که اسامی آنان با صراحت مشخص شده است را به برنامه وب خواهد داد. سایر کاربران ، امکان دستیابی به برنامه وب را دارا نخواهند بود ( نقش عنصر deny در مثال فوق ) علاوه بر لیست مجاز فوق که اسامی دو کاربر را مشخص و آنان را برای استفاده از برنامه وب مجاز می نماید ، دو کاربر فوق ، می بایست دارای Account لازم در Domain شبکه نیز باشند . تائید کاربران بر اساس نوع وظیفه
پس از تائید کاربر و صدور مجوز لازم به منظور استفاده از برنامه وب ، می توان با استفاده از خصلت 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 به منظور آگاهی و انجام عملیات لازم با توجه به نوع وظیفه کاربر که از برنامه وب استفاده می نماید ، می توان از متد IsInRole شی User ، استفاده نمود . IsInRole method If User.IsInRole(”Administrators”) Then استفاده از تنظیمات IIS به همراه Windows Authentication در IIS بر روی فولدر برنامه وب کلیک سمت راست نموده و در ادامه گزینه Properties را انتخاب می نمائیم . برنامه IIS در ادامه جعبه محاوره ای Properties مربوط به فولدر را نمایش خواهد داد . بر روی Directory Security Tab کلیک و در ادامه دکمه Edit را در گروه Anonymous Access And Authentication Control کلیک می نمائیم . IIS ، جعبه محاوره ای Authentication Methods را نمایش خواهد داد . اولین گروه از تنظیمات در جعبه محاوره ای ، کنترل دستیابی Anonymous را انجام می دهد ( همه کاربران ). غیر فعال نمودن گزینه فوق ، معادل <"?" = deny User > در فایل Web.config است. Check Box های موجود در قسمت دوم جعبه محاوره ای ، مجاز بودن برنامه به منظور استفاده از Basic و یا Digest Authentication را علاوه بر Windows Authentication ، مشخص می نماید. روش های فوق ، ایمنی بمراتب کمتری را نسبت به Windows Integrated ارائه می نمایند .می توان چندین روش authentication را در IIS فعال نمود . در صورتیکه چندین روش فعال شده باشد ، می توان با استفاده از متد AuthenticationType مربوط به شی Identity ، از روش استفاده شده به منظور تائید کاربر ، آگاهی یافت . AuthenticationType method Response.Write(User.Identity.AuthenticationType)
در این مقاله به بررسی Forms Authentication خواهیم پرداخت . 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 ، تائید کاربر را بر اساس اطلاعات ارسالی ( نام و رمز عبور ) انجام و یک کوکی را ایجاد می نماید . در نهایت ، صفحه وب ایمن درخواست شده به همراه کوکی جدید برای سرویس گیرنده ارسال می گردد. مادامیکه کوکی معتبر باشد ، کاربر قادر به درخواست و مشاهده سایر صفحات وب می باشد. فرآیند فوق را می توان به دو حالت متفاوت تعمیم و مورد توجه قرار داد : حالت اول : درخواست یک صفحه ایمن از سرویس دهنده ، توسط یک کاربر غیرمجاز و تائید نشده حالت دوم : درخواست یک صفحه ایمن از سرویس دهنده ، توسط یک کاربر مجاز و تائید شده در روش 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 Web.Config setting for Forms Authentication
کد فوق، یک نوع ساده از تائید کاربران به روش Forms را نشان می دهد . در این رابطه ، اغلب از تعاریف و تنظیمات پیش فرض و یک لیست کاربران مجاز، استفاده شده است. از عناصر متفاوتی در ارتباط با Forms Authentication در فایل Web.Config استفاده می گردد.هر یک از عناصر دارای خصلت های خاص خود می باشند : عنصر عنصر عنصر عنصر عنصر ، امکان ذخیره سازی لیست کاربران را در Web.Config فراهم می نماید . رویکرد فوق ، روشی ساده به منظور تعریف کاربران مجاز یک برنامه وب می باشد . در چنین مواردی ، مدیریت سیستم می تواند بسادگی و در صورت لزوم نام و رمز عبور کاربران دیگری را به لیست مجاز کاربران ، اضافه نماید . مکانیزم فوق ، در مواردی که قصد داشته باشیم ، امکان تعریف نام و رمز عبور را در اختیار کاربران قرار دهیم ، گزینه مناسبی نبوده و می بایست از یک فایل و یا بانک اطلاعاتی به منظور ذخیره سازی اطلاعات کاربران ، استفاده گردد. |












