PDA

View Full Version : Security in asp.net



Javad.Kashi
شنبه 16 بهمن 1389, 11:31 صبح
دوستان سلام
در ابتدا ،به خطاهای احتمالی در این مقاله اعتراف کرده و از دوستان خواهش می کنم خطاهای بنده را گوشزد نمایند.با تشکر
امينت در وب
بخشي از امنيت که شامل حال برنامه نويس ها مي شود، شامل دو بخش مي شود :
1. Authentication احراز هويت
2. Authorization کنترل دسترسي


Authentication





Web.config :
<authenticationmode=&quot;Windows | forms | Passport | None &quot; />

هنگام ورود به یک سازمان مهم ،چند نفر در مقابل درب سازمان ایستاده اند و تا کارت شناسایی (هویت) شما را بررسی نکنند اجازه ورود به داخل سازمان را نمی دهند. به همین صورت در asp.net چند مکانیسم برای احراز هویت وجود دارد که پرکاربرد ترین آنها عبارتند از:


Forms Authentication & Windows Authentication




windows authentication :
این مکانیسم تنها در شبکه هایی که visitor ها از نظر شبکه ، کاربرانی شناخته شده محسوب می شوند، کاربرد دارد.مثل LANها ، اینترانت ها و امثال اینها.
در این مکانیسم تمامی تنظیمات اعم از تعریف کاربران و سطح دسترسی آنها در server و دربخش active directory مدیریت می شود.و احراز هویت آنها با لاگین windows کار می کند و به صورت کلی، در برنامه نویسی کار خاصی ندارد و تنها کاری که می کنیم نوع authentication را مساوی با windows قرار می دهیم.


<authenticationmode=&quot;Windows&quot;/>
در این مکانیسم زمانی که شما با داشتن یک username و password به سرور لاگین می کنید به بخش های application نیز دسترسی خواهیم داشت.
توجه:استفاده از این مکانیسم در یک وب سایت کار عاقلانه نمی باشد برای مثال در همین وب سایتبرنامه نویس که بیش از 150000کاربر دارد در صورت استفاده از این مکانیسم ، می بایست تمامی کاربران در active directory سرور شناخته شده باشند و علاوه برآن مدیریت سطح دسترسی آنها می باشد که در عمل کاری،بسیار دشوار و غیر ممکن می باشد.پس در web application ها از مکانیسم دیگری به نام forms authentication استفاده می کنیم.

Forms Authentication :
در این مکانیسم، پروسه احراز هویت و اینکه کاربر هنوز لاگین هست یا نه و سطح دسترسی کاربر به بخش های مختلف سیستم و امثال اینها در Asp.net مدیریت می شود.
ما ابتدا ساختار کلی وب سایت را طراحی می کنیم به این صورت که به عموم کاربران اجازه دسترسی به صفحاتی که در روت سایت قرار دارند ، را می دهیم ( مثل Default.aspx و Login.aspx )
برای استفاده از این مکانیسم در سیستم ، در قسمت web.config این کد را وارد می کنیم.


<authentication mode=&quot;Forms&quot;>
<forms name=&quot;Security&quot; defaultUrl=&quot;~/Default.aspx&quot; loginUrl=&quot;~/Login.aspx&quot;
timeout=&quot;90000&quot; slidingExpiration=&quot;true&quot;/>
</authentication>
توضیحات :
name : نام کوکی لاگین است که هنگام وارد شدن کاربر به سیستم ساخته می شود.نام این کوکی به طور پیش فرض،aspxOutAuthentication می باشد.
توجه :توصیه می شود که نام کوکی لاگین در سیستم های مختلف ، گوناگون وارد شود.برای مثال اگر دوسیستم در وب سایت داشته باشیم ولی نام کوکی لاگین در هر دو یکی باشد،کاربر با لاگین کردن در یک سیستم در سیستم بعدی نیز لاگین محسوب می شود.
defaultUrl :در صورتی که کاربر لاگین کرد ولی صفحه ی مقصدی را انتخاب نکرد،به صفحه ی پیش فرض هدایت می کند.
LoginUrl :کاربران لاگین نشده را به صفحه لاگین هدایت می کند.
timeout :عمر کوکی لاگین را بر حسب دقیقه مشخص می کند.
slidingExpiration :باعث ریست شدن عمر کوکی در هر بار وارد شدن کاربر به سیستم می شود.
اینک با توجه به توضیحات ارائه شده ، صفحه ای با نام Login.aspx در روت سایت ایجاد می کنیم تا امکان احراز هویت را برای کاربر مقدور نمائیم.در این صفحه دو فیلد برای وارد کردن Username و Password و یک دکمه برای ثبت لاگین و یک checkbox برای مشخص کردن لاگین بودن کاربر در بازدید های بعدی، قرار می دهیم .
در صورتی که نام کاربری و کلمه عبور صحیح باشد،کاربر را به عنوان یک کاربر شناخته شده در سیستم،معرفی می کنیم به این صورت :


protected void btnLogin_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
FormsAuthentication.RedirectFromLoginPage(txtUsern ame.Text, CheckBoxRemember.Checked);
}
}
با توجه به این کد ، اگر کاربر از صفحه ای که نیاز به لاگین داشته به این صفحه آمده بود ،به همان صفحه راهنمایی خواهد شد و در غیر این صورت اگر مستقیما به این صفحه آمده بود، به DefaultUrl که در web.config در قسم احراز هویت معین شده ، راهنمایی خواهد شد.
بعد از احراز هویت نوبت به کنترل دسترسی کاربران(Authorization) می رسد که برای پیگیری این مورد ، از دوستان خواهش می کنم به مقاله ای که این حقیر در این باره نوشته ام ، رجوع کنند: http://barnamenevis.org/showthread.php?272292

دوستان لطفا سوالات خود را در زمینه Authentication مطرح کنند تا با کمک هم به بررسی آنها بپردازیم .
65968





یاعلی

FirstLine
شنبه 16 بهمن 1389, 19:14 عصر
با سلام
لطفا در مورد تعریف و استفاده از Roles ها نیز راهنمایی بفرمایید.
با تشکر