ويژگی های امنيتی(ASP.NET (1
بررسی مختصر مساله امنيت در برنامه های ASP.NET در نحوه ارتباط آن با کاربر
بعضی از سايتهای وب اطلاعات خاصی را از کاربر معمولی دريافت نمی کنند، اما اطلاعات موجود در خود را منتشر می کنند. همانند موتورهای جستجو در حاليکه سايتهای ديگری وجود دارند که نيازمند جمع آوری اطلاعات حساس از کاربرانشان هستند (برای مثال شماره کارت های اعتباری و ديگر اطلاعات شخصی). اين سايتهای وب به پياده سازی امنيت مستحکم تری برای جلوگيری از حمله احتمالی موجوديت های خارجی نيازمندند.
عبارت است از روند اعتباردهی هويت يک کاربر به پذيرفتن يا رد کردن يک درخواست، يعنی دريافت گواهی نامه ها (برای مثال نام کاربر و کلمه عبور) از کاربران و اعتبار دهی آن. بعد از اينکه هويت بررسی شد و معتبر تشخيص داده شد، کاربر بصورت قانونی مطرح می شود و درخواست های دسترسی به منابع انجام می شود. بصورت ايده آل درخواست های آتی همان کاربر تا هنگام خروج از سيستم مرتبط با روند Authentication نيست.
Authorization:
عبارت است از روند تضمين نمودن اينکه کاربران با هويت های معتبر مجاز به دسترسی به منابع مشخصی هستند.
Impersonation:
اين روند يک برنامه کاربردی را قادر می سازد تا به نوبت هويت کاربر و درخواستهای بعدی او برای ساير منابع را تضمين کند. دسترسی به منابع متناسب با هويت کاربری که جايگزين شده است (Impersonated) تاييد يا رد می گردد. به عبارت ديگر Impersonation يک پروسه سرويس دهنده (Server Process) را قادر می سازد تا با استفاده از امنيت گواهی نامه سرويس گيرنده ها (Client) اجرا شود.
به طور معمول نسل های جديد زبان های برنامه نويسی به اين دليل متولد می شوند که زبان های قديمی تر دارای امکانات محدود بودند و يا قدرت استفاده از تکنولوژی های فعلی را به صورت مطلوب و ساده ندارند.
مهمترين نيازی که به عنوان آخرين تکنولوژی وجود دارد، برنامه نويسی در محيط اينترنت است. اينترنت در مدت تقريبا ۸ سال جای خود را به عنوان يکی از مهمترين وسايل ارتباطی برای کارهای روزمره و تجارت باز کرده است. سيستم های برنامه نويسی قديمی تر امکان برنامه نويسی برای اينترنت را فراهم کرده بودند اما هر کدام دارای اشکالات بزرگی هستند، برای مثال تکنولوژی COM اولين بار در ويندوز به کار گرفته شد. در سال 1970 نيز سيستم هايی برای Unix نوشته شده بودند، جاوا نيز در اصل برای ابزارهای الکترونيکی بود و نه برای اينترنت.
سپس برای اولين بار يک سيستم جامع برای برنامه نويسی تحت اينترنت ايجاد شد. اين سيستم -NET. از مراحل سطح پايين که به زبان ماشين می باشد تا بالاترين سطح که برنامه نويسی ويژوال آن می باشد برای استفاده در اينترنت طراحی شده است. البتهNET. فقط برای اينترنت نيست و با استفاده از آن می توان برنامه های کامل تحت Client نيز ايجاد کرد، اما بزرگترين مزيت آن دربرابر سيستم های ديگر امکانات اينترنت آن است.
برای اينکه مزايای استفاده ازNET. را بهتر متوجه بشويم بهتر است در ابتدا معايب سيستم های پيشين را ذکر کنيم. شرکت مايکروسافت تا قبل از سال 1995 به برنامه نويسی در محيط های Client و Server می پرداخت، اما از آن سال به بعد توجه بيشتری به مساله برنامه نويسی در اينترنت کرد. مايکروسافت COM و +COM را ايجاد کرد و آنها را در ويژوال استوديوی 6 به کار گرفت. در سال 1999 حدود ۵۰ در صد از بزرگترين سايتهای تجارت الکترونيکی از محصولات مايکروسافت استفاده می کردند. اما هنوز هم مشکلات بزرگی در سيستم های مايکروسافت وجود داشت که يکی از آنها دشواری نوشتن برنامه در اينترنت با محصولات مايکروسافت بود. شرکت مايکروسافت برای راحتی کار برنامه نويس ها ASP يا Active Server Page را ايجاد کرد. با اينکه اين يک قدم بزرگ بود و کارها را بسيار ساده کرد ولی هنوز از برنامه نويسی شی گرا پشتيبانی نمی کرد. همچنين در ويژوال استوديوی 6 قسمتی برای Internet Application ايجاد شده بود و در آنها امکان ساختن Web Class وجود داشت ولی هيچ وقت به عنوان يک ابزار کار آمد برای برنامه نويسی وب درنظر گرفته نشد.
بخش اول
به نام Presentation tire معروف است. در اين بخش رابط تصويری کاربر وجود دارد و خود نيز به دو نوع Internet Browser و Win 32 GUI تقسيم می شود که هر کدام مشکلات خاص خود را دارند. در مدلی که از Win32 GUI يا همان نرم افزارهای معمولی استفاده می شود دو مشکل بزرگ وجود دارد ؛ دشواری بروز رسانی نرم افزار و ديگری DLLHell که در ادامه توضيح داده خواهد شد. در نوع دوم مشکلاتی از قبيل نبود امکانات برنامه نويسی کافی در محيط مرورگر، نبود رابط قوی با کاربر، نبودن مرورگر های يکسان و... وجود دارد. همچنين هميشه يک اتصال به اينترنت يا اينترانت لازم است. در اين نوع از برنامه نويسی می توان از Java Applet ها يا ActiveX استفاده کرد ولی مرورگر بايد امکان استفاده از آن را داشته باشد، مخصوصا ً هنگام استفاده از ActiveX که بايد فقط از IE استفاده کرد.
بخش دوم
که Middle tier نام دارد، مکانی است که اطلاعات و قوانين تجاری در آن وجود دارد. منظور از قوانين ، متد ها و اجزائی هستند که اعمال کاربران را کنترل می کنند. مهمترين و آسان ترين زبان برای نوشتن اين اجزا از DNA ويژوال بيسيک است. برنامه نويسی که بخواهد در اين رده برنامه بنويسد بايد آشنايی کاملی با COM و پروتکل های رايج داشته، همچنين بايد مهارت کافی در استفاده از ADO و ADSI داشته باشد. مشخص است که يک اشتباه در اين لايه باعث بروز خطا و نقص در کل سيستم می شود.
بخش سوم
يا Data tier مکانی است که اطلاعات سازمان در آن ذخيره می شود. معمولا ً در اين قسمت از بانکهای پيشرفته رابطه ای مانند SQL Server و Oracle استفاده می کنند.
نقصان در نوشتن برنامه هايی با رابط گرافيکی خوب که در اينترنت کار می کردند کاملا ً مشهود است، نمونه بارز آن اختلاف در برنامه نويسی در ويژوال بيسيک و ASP است. ويژوال بيسيک با رابط گرافيکی کاملا ً سطح بالا و ASP تقريبا ً رابط گرافيکی ندارد. همين امر باعث می شد که يک برنامه نويس مجبور باشد طيف وسيعی از تکنيک ها و زبان ها را فرابگيرد تا بتواند برنامه ساده ای در اينترنت بنويسد.
۲- نبودن حالت های ذخيره اطلاعات رابط گرافيکی در صفحه های اينترنتی
نمونه اين حالت زمانی است که در يک textbox متنی وجود داشته باشد. در برنامه های Win32GUI متن داخل textbox تا زمانی که کاربر يا برنامه آن را تغيير نداده بر جای خود وجود دارد. اما در محيط اينترنت و نوع ASP با هر بار refresh کردن صفحه کل اطلاعات ازبين می رود. البته اين مشکل با استفاده از شئ های Request و Response تقريبا ً قابل حل است ولی احتياج به برنامه نويسی برای هر تکه از صفحه ASP دارد.
۳- نداشتن Event Handler در محيط برنامه نويسی اينترنت
يکی از مهمترين ابزاری که در برنامه نويسی Win32 GUI وجود دارد استفاده از Event ها است. با تکنولوژی که در حال حاضر وجود دارد تنها راه رسيدن به اين مهم استفاده از ActiveX است که به علت مسايل امنيتی در بيش از ۹۵ در صد مواقع توسط کاربر استفاده از آن رد می شود.
مقدمه ای بر Microsoft.NET
ASP.NET عضوی از بدنه NET. و متعلق به ميکروسافت است. شرکت ميکروسافت موفقيت خود را با سرنوشت NET. گره زده است. بنابراين شايد جالب باشد که بدانيم NET. چيست؟ بدنه NET. دارای دو قسمت اصلی است: قسمت اول يک کتابخانه عظيم از کلاس های آماده است و قسمت دوم يک محيط زمان اجرا می باشد.
دليل دوم اينکه چون همه زبان های NET. به يک زبان ميانی تبديل می شوند، لذا اين زبان ها در کنار يکديگر بخوبی کار می کنند. بعنوان مثال شما می توانيد از کلاسی که به زبان ويژوال بيسيک نوشته شده است در زبان #C استفاده نمائيد.
اگرچه ASP.NET مدل جديدی از برنامه نويسی تحت وب می باشد و آمده است که نواقص و کمبودهای قبلی را برطرف نموده و به کارآيی برنامه های تحت وب بيافزايد، اما شما همچنان نياز داريد که جهت کارآيی و بهينه بودن برنامه هايتان نکاتی را رعايت کنيد. اين نکات جهت افزايش کارآيی، سرعت و صرفه جويی در مصرف منابع بر روی سرور است. جهت دستيابی به ليست کامل و مفصل اين نکات به اين آدرس در سايت MSDN مراجعه نمائيد. چکيده برخی از اين نکات بشرح زير است:
ادامه دارد ......
* ارسال مقاله توسط عضو محترم سایت با نام کاربری : mirkazemi
/خ
مقدمه
بعضی از سايتهای وب اطلاعات خاصی را از کاربر معمولی دريافت نمی کنند، اما اطلاعات موجود در خود را منتشر می کنند. همانند موتورهای جستجو در حاليکه سايتهای ديگری وجود دارند که نيازمند جمع آوری اطلاعات حساس از کاربرانشان هستند (برای مثال شماره کارت های اعتباری و ديگر اطلاعات شخصی). اين سايتهای وب به پياده سازی امنيت مستحکم تری برای جلوگيری از حمله احتمالی موجوديت های خارجی نيازمندند.
تفاوت جريان امنيتی ASP و ASP.NET
عمليات اساسی امنيتی ASP.NET
عبارت است از روند اعتباردهی هويت يک کاربر به پذيرفتن يا رد کردن يک درخواست، يعنی دريافت گواهی نامه ها (برای مثال نام کاربر و کلمه عبور) از کاربران و اعتبار دهی آن. بعد از اينکه هويت بررسی شد و معتبر تشخيص داده شد، کاربر بصورت قانونی مطرح می شود و درخواست های دسترسی به منابع انجام می شود. بصورت ايده آل درخواست های آتی همان کاربر تا هنگام خروج از سيستم مرتبط با روند Authentication نيست.
Authorization:
عبارت است از روند تضمين نمودن اينکه کاربران با هويت های معتبر مجاز به دسترسی به منابع مشخصی هستند.
Impersonation:
اين روند يک برنامه کاربردی را قادر می سازد تا به نوبت هويت کاربر و درخواستهای بعدی او برای ساير منابع را تضمين کند. دسترسی به منابع متناسب با هويت کاربری که جايگزين شده است (Impersonated) تاييد يا رد می گردد. به عبارت ديگر Impersonation يک پروسه سرويس دهنده (Server Process) را قادر می سازد تا با استفاده از امنيت گواهی نامه سرويس گيرنده ها (Client) اجرا شود.
چرا به دات نت احتياج داريم؟
به طور معمول نسل های جديد زبان های برنامه نويسی به اين دليل متولد می شوند که زبان های قديمی تر دارای امکانات محدود بودند و يا قدرت استفاده از تکنولوژی های فعلی را به صورت مطلوب و ساده ندارند.
مهمترين نيازی که به عنوان آخرين تکنولوژی وجود دارد، برنامه نويسی در محيط اينترنت است. اينترنت در مدت تقريبا ۸ سال جای خود را به عنوان يکی از مهمترين وسايل ارتباطی برای کارهای روزمره و تجارت باز کرده است. سيستم های برنامه نويسی قديمی تر امکان برنامه نويسی برای اينترنت را فراهم کرده بودند اما هر کدام دارای اشکالات بزرگی هستند، برای مثال تکنولوژی COM اولين بار در ويندوز به کار گرفته شد. در سال 1970 نيز سيستم هايی برای Unix نوشته شده بودند، جاوا نيز در اصل برای ابزارهای الکترونيکی بود و نه برای اينترنت.
سپس برای اولين بار يک سيستم جامع برای برنامه نويسی تحت اينترنت ايجاد شد. اين سيستم -NET. از مراحل سطح پايين که به زبان ماشين می باشد تا بالاترين سطح که برنامه نويسی ويژوال آن می باشد برای استفاده در اينترنت طراحی شده است. البتهNET. فقط برای اينترنت نيست و با استفاده از آن می توان برنامه های کامل تحت Client نيز ايجاد کرد، اما بزرگترين مزيت آن دربرابر سيستم های ديگر امکانات اينترنت آن است.
برای اينکه مزايای استفاده ازNET. را بهتر متوجه بشويم بهتر است در ابتدا معايب سيستم های پيشين را ذکر کنيم. شرکت مايکروسافت تا قبل از سال 1995 به برنامه نويسی در محيط های Client و Server می پرداخت، اما از آن سال به بعد توجه بيشتری به مساله برنامه نويسی در اينترنت کرد. مايکروسافت COM و +COM را ايجاد کرد و آنها را در ويژوال استوديوی 6 به کار گرفت. در سال 1999 حدود ۵۰ در صد از بزرگترين سايتهای تجارت الکترونيکی از محصولات مايکروسافت استفاده می کردند. اما هنوز هم مشکلات بزرگی در سيستم های مايکروسافت وجود داشت که يکی از آنها دشواری نوشتن برنامه در اينترنت با محصولات مايکروسافت بود. شرکت مايکروسافت برای راحتی کار برنامه نويس ها ASP يا Active Server Page را ايجاد کرد. با اينکه اين يک قدم بزرگ بود و کارها را بسيار ساده کرد ولی هنوز از برنامه نويسی شی گرا پشتيبانی نمی کرد. همچنين در ويژوال استوديوی 6 قسمتی برای Internet Application ايجاد شده بود و در آنها امکان ساختن Web Class وجود داشت ولی هيچ وقت به عنوان يک ابزار کار آمد برای برنامه نويسی وب درنظر گرفته نشد.
مدل برنامه نويسی DNA
بخش اول
به نام Presentation tire معروف است. در اين بخش رابط تصويری کاربر وجود دارد و خود نيز به دو نوع Internet Browser و Win 32 GUI تقسيم می شود که هر کدام مشکلات خاص خود را دارند. در مدلی که از Win32 GUI يا همان نرم افزارهای معمولی استفاده می شود دو مشکل بزرگ وجود دارد ؛ دشواری بروز رسانی نرم افزار و ديگری DLLHell که در ادامه توضيح داده خواهد شد. در نوع دوم مشکلاتی از قبيل نبود امکانات برنامه نويسی کافی در محيط مرورگر، نبود رابط قوی با کاربر، نبودن مرورگر های يکسان و... وجود دارد. همچنين هميشه يک اتصال به اينترنت يا اينترانت لازم است. در اين نوع از برنامه نويسی می توان از Java Applet ها يا ActiveX استفاده کرد ولی مرورگر بايد امکان استفاده از آن را داشته باشد، مخصوصا ً هنگام استفاده از ActiveX که بايد فقط از IE استفاده کرد.
بخش دوم
که Middle tier نام دارد، مکانی است که اطلاعات و قوانين تجاری در آن وجود دارد. منظور از قوانين ، متد ها و اجزائی هستند که اعمال کاربران را کنترل می کنند. مهمترين و آسان ترين زبان برای نوشتن اين اجزا از DNA ويژوال بيسيک است. برنامه نويسی که بخواهد در اين رده برنامه بنويسد بايد آشنايی کاملی با COM و پروتکل های رايج داشته، همچنين بايد مهارت کافی در استفاده از ADO و ADSI داشته باشد. مشخص است که يک اشتباه در اين لايه باعث بروز خطا و نقص در کل سيستم می شود.
بخش سوم
يا Data tier مکانی است که اطلاعات سازمان در آن ذخيره می شود. معمولا ً در اين قسمت از بانکهای پيشرفته رابطه ای مانند SQL Server و Oracle استفاده می کنند.
محدوديت های COM
DLL Hell:
کمبود در وراثت:
برخی محدوديت های برنامه نويسی اينترنتی در مدل DNA
نقصان در نوشتن برنامه هايی با رابط گرافيکی خوب که در اينترنت کار می کردند کاملا ً مشهود است، نمونه بارز آن اختلاف در برنامه نويسی در ويژوال بيسيک و ASP است. ويژوال بيسيک با رابط گرافيکی کاملا ً سطح بالا و ASP تقريبا ً رابط گرافيکی ندارد. همين امر باعث می شد که يک برنامه نويس مجبور باشد طيف وسيعی از تکنيک ها و زبان ها را فرابگيرد تا بتواند برنامه ساده ای در اينترنت بنويسد.
۲- نبودن حالت های ذخيره اطلاعات رابط گرافيکی در صفحه های اينترنتی
نمونه اين حالت زمانی است که در يک textbox متنی وجود داشته باشد. در برنامه های Win32GUI متن داخل textbox تا زمانی که کاربر يا برنامه آن را تغيير نداده بر جای خود وجود دارد. اما در محيط اينترنت و نوع ASP با هر بار refresh کردن صفحه کل اطلاعات ازبين می رود. البته اين مشکل با استفاده از شئ های Request و Response تقريبا ً قابل حل است ولی احتياج به برنامه نويسی برای هر تکه از صفحه ASP دارد.
۳- نداشتن Event Handler در محيط برنامه نويسی اينترنت
يکی از مهمترين ابزاری که در برنامه نويسی Win32 GUI وجود دارد استفاده از Event ها است. با تکنولوژی که در حال حاضر وجود دارد تنها راه رسيدن به اين مهم استفاده از ActiveX است که به علت مسايل امنيتی در بيش از ۹۵ در صد مواقع توسط کاربر استفاده از آن رد می شود.
معايب استفاده از API
مقدمه ای بر Microsoft.NET
ASP.NET عضوی از بدنه NET. و متعلق به ميکروسافت است. شرکت ميکروسافت موفقيت خود را با سرنوشت NET. گره زده است. بنابراين شايد جالب باشد که بدانيم NET. چيست؟ بدنه NET. دارای دو قسمت اصلی است: قسمت اول يک کتابخانه عظيم از کلاس های آماده است و قسمت دوم يک محيط زمان اجرا می باشد.
کتابخانه کلاس ها در NET.
• فضانام ها در NET.
• مجموعه ها در NET.
زبان مشترک زمان اجرا در NET.
دليل دوم اينکه چون همه زبان های NET. به يک زبان ميانی تبديل می شوند، لذا اين زبان ها در کنار يکديگر بخوبی کار می کنند. بعنوان مثال شما می توانيد از کلاسی که به زبان ويژوال بيسيک نوشته شده است در زبان #C استفاده نمائيد.
نکاتی جهت بهينه سازی برنامه های ASP.NET
اگرچه ASP.NET مدل جديدی از برنامه نويسی تحت وب می باشد و آمده است که نواقص و کمبودهای قبلی را برطرف نموده و به کارآيی برنامه های تحت وب بيافزايد، اما شما همچنان نياز داريد که جهت کارآيی و بهينه بودن برنامه هايتان نکاتی را رعايت کنيد. اين نکات جهت افزايش کارآيی، سرعت و صرفه جويی در مصرف منابع بر روی سرور است. جهت دستيابی به ليست کامل و مفصل اين نکات به اين آدرس در سايت MSDN مراجعه نمائيد. چکيده برخی از اين نکات بشرح زير است:
Session State را در صورت عدم نياز حتما غيرفعال نمائيد.
از رفت و برگشت های زياد از حد پرهيز کنيد.
از کنترل های سرور با احتياط استفاده کنيد.
از Page.IsPostback استفاده کنيد.
تا آنجائيکه ممکن است از View State استفاده نکنيد.
از Strict="true" در صفحات تان استفاده کنيد.
از Stored Procedure استفاده کنيد.
از Data Reader استفاده کنيد.
از Caching استفاده کنيد.
حالت Debug را غيرفعال کنيد.
ادامه دارد ......
* ارسال مقاله توسط عضو محترم سایت با نام کاربری : mirkazemi
/خ