تعداد بازدید : 81521
تعداد نوشته ها : 67
تعداد نظرات : 0
با استفاده از Asp.net 2.0 برنامه نویسان بهتر است از یکی از فراهم کننده
های Membership برای مدیریت ذخیره سازی حسابهای کاربری شان استفاده کنند.
در این سری مقالات ما از SqlMembershipProvider استفاده میکنیم. این فراهم
کننده از پایگاه داده های SQL Server برای ذخیره سازی حسابهای کاربری
استفاده مینماید.
زمانی که از فراهم کننده SqlMembershipProvider استفاده میکنیم، نیاز
داری تا یک شمای پایگاه داده بخصوص را پیاده سازی کنیم که شامل جداول،
نماها (views) و روالهای ذخیره شده ( stored procedures ) مورد نیاز است.
با استفاده از فراهم کننده Membership، اعتبار سنجی اعتبارنامه کاربر به سادگی هر چه تمام
به خاطر سپردن بلیط احراز هویت در طول مشاهده صفحات
پس
از لاگین کردن، بلیط احراز هویت فرمها میبایست در هر درخواست به وب سرور
فرستاده شود تا کاربر در سایت مذکور همچنان لاگین شده بماند.
این کار
معمولا بوسیله نگهداری بلیط احراز هویت در مجموعه کوکی های کاربر انجام
میگردد. کوکی ها فایل های متنی کوچکی هستند که در کامپیوتر کاربر نگهداری
میشوند و در سربرگهای HTTP در هر درخواستی که به سمت سایت ایجاد کننده
کوکی فرستاده میشود، ارسال میگردند.
بنابراین، زمانی که بلیط احراز
هویت فرمها ایجاد و در کوکی های مرورگر ذخیره شد، مراجعات بعدی به سایت
مذکور با ارسال بلیط گفته شده انجام میگیرد و کاربر احر
پیشگفتار
بسیاری از وب سایتها، انجمنهای گفتگوی برخط،
سایتهای تجاری، سایتهای سرویس دهنده ایمیل، درگاه ها در یک قابلیت مشترک
به نام حسابهای کاربری دارند. سایتهایی که امکان حسابهای کاربری را فراهم
میسازند، میبایست حاوی سرویسهای خاصی نیز باشند.
حداقل اینکه یک کاربر
جدید نیاز دارد که بتواند یک حساب کاربری جدید برای خودیش ایجاد کند و
کابران دارای چنین حسابی باید بتوانند لاگین کرده و وارد سایت شوند. چنین
وب سایتهایی میتوانند بر مبنای کاربری که لاگین کرده است تصمیم گیری
نمایند: برخی صفحات یا اعمال میبایست فقط برای کاربران لاگین کرده یا بخش
خاصی از کاربران قابل دسترسی باشد.
همچنین برخی صف
مدتی پیش در حال توسعه برنامه ای بودم که یک صفحه Asp.net حجیم داشت. این
صفحه دارای 30 کنترل مختلف بود. همانطور که میدانید در چنین شرایطی بسیار
مفید است اگر Viewstate را برای کنترلهایی که در واقع به آنها نیاز نداریم
غیرفعال نماییم، مثلا برای literal ها یا Label ها.
پس از انجام این کار من متوجه شدم که ViewState مورد نظر همچنان حجم
بالایی دارد و در نتیجه هنوز هم مشکل ساز است. تصور کنید کاربرانی که به
اینترنت پرسرعت دسترسی ندارند آیا تمایلی دارند صفحه را مشاهده نمایند که
در آن یک ViewState 40 کیلوبایتی وجود داشته باشد؟
این مشکل بویژه
زمانی حادتر میشود که منطق برنامه ما ایجاب کند کارر بار
فرض کنید میخواهیم در یک صفحه، تصاویری که در پایگاه داده هایمان موجود
است را به صورت thumbnail نمایش دهیم. برای انجام این کار ابتدا کافی است
تا یک صفحه وب aspx ایجاد کنیم. سپس در متد Page_Load در کد پشت صفحه
تصویر تمام اندازه ای را که از پایگاه داده ها دریافت نموده ایم کاهش
اندازه دهیم و آن را روی صفحه نمایش دهیم.
در متد Page_Load این مراحل را طی میکنیم:
1- یک شیء از کلاس System.Drawing.Image با استفاده از آرایه ای از بایتها که از پایگاه داده دریافت نموده ایم ایجاد میکنیم
2- از یک ثابت برای تعریف ارتفاع thumbnail و محاسبه عرض برای نگهداری نسبت تصویر استفاده میکنیم
3- از متد GetThumbnai
گاهی اوقات لازم است برخی پارارمترهای زمان اجرای HTTP با توجه به برنامه
ای که در حال توسعه آن هستیم تغییراتی داشته باشند. مثلا زمان timeout
گاهی ممکن است با توجه به حجم پردازش ما بر روی سرور کافی نباشد و مجبور
به اضافه کردن آن باشیم. از آنجایی که ما در برنامه های تحت وب معمولا به
و سرور دسترسی نداریم نمیتوانیم این تنظیمات را از طریق وب سرور انجام
دهیم.
در این برنامه قصد داریم تا به شما آموزش دهیم چگونه این کار را از طریق فایل web.config انجام دهیم.
برای انجام این کار مراحل زیر را طی میکنیم:
1- فایل web.config را در صورت عدم وجود ایجاد میکنیم
2-
در قسمت configuration ، یک هندلر به نا
در این مقاله یکی از ویژگیهای جذاب و کاربردی چهارچوب دات نت یا.net
framework را که مکانیزم شرح نوع یا Type Description است بررسی میکنیم.
این مکانیزم در فضای نام System.ComponentModel قرار دارد و عموما توسط
کلاسهای TypeDescriptor, CustomTypeDescriptor ، اینترفیس
ICustomTypeDescriptor و برخی کلاسهای دیگر بیان میشود. این کلاسها عموما
توسط برخی کنترلها مانند DataGrids و DataBinder مورد استفاده قرار
میگیرند.
به طور خلاصه میتوانیم اینگونه بگوییم که این کلاسها به ما امکان
میدهد تا یک نوع داده ای یا یک منبع داده ای تعریف کنیم که زمانی که به یک
کنترل دات نت مقید سازی میشود – به عنوان مثا
از دو متد برای ایجاد کردن صفحات استفاده میکند:
1- کد درون خط In-line code
2- کد پشت صفحه code behind
کد دورن
خط کدی است که مستقیما داخل صفحه ASPX قرار داده شده است. در حالی که کد
پشت صفحه به آن دسته از کدهایی گفته میشود که درون یک کلاس فایل دیگر قرار
دارند. این کار باعث میشود تا کدهای HTML از منطق برنامه به زیبایی تفکیک
شوند.
زمانی که ما از ویژوال استودیو دات نت برای ایجاد وب فرمهای
ASP.NET استفاده میکنیم، به طور پیش فرض از متد کد پشت صفحه استفاده
میشود. علاوه بر این،ویژوال استودیو دات نت به طور خودکار زمانی که پروژه
خود را میسازیم یا اصطلاحا build میکنیم، آن را پیش کامپایل
در این مقاله قصد داریم تا راههای متعددی را برای مقابله با مشکلات و نقاط ضعف کوکیها مورد بررسی قرار دهیم.
مقدمه
هرچند امنیت یک موضوع داغ روز است اما برنامه
نویسان به کندی در حال یادگیری آن دسته از تکنیکهای برنامه نویسی هستند که
بتوانند از برنامههایشان در برابر تهدیدهای امنیتی محافظت کنند. اگرچه
سالها پیش برنامه نویسی امن و حفاظتی یک موضوع لوکس و نه چندان کاربردی به
نظر میرسید، امروزه با دگرگونی های رخ داده دیگر داشتن چنین دیدگاهی
نمیتواند چندان مناسب باشد .
با افزایش روزافزون تهدیدهایی که در جهان
کامپیوتر پیش میآیند،ما برنامه نویسان میبایست در حین توسعه برنامه و
دانستن چرخه حیات یک صفحه در asp.net برای بسیاری از توسعه دهندگان امری
است ضروری.چرا که این بسیار مهم است که کدهای مورد نظر ما در کدام مرحله
از این چرخه انجام شوند و همچنین این که اصولا عملکرد صفحه در شرایط مختلف
به چه شکل است. در این مقاله صرفا قصد داریم تا این چرخه را به صورت ساده
و گویا برای شما بیان کنیم
شاید ساده ترین شکل بیان ترتیب رخدادهای ممکن چنین باشد:
1. Page Request
2. Start
3. Page Initialization
4. Load
5. Validation
6. Postback event handling
7. Rendering
8. Unload
ابتدا
بیاییم برای هرکدام از این بخشها یک مخفف معرفی کنیم. البته این نکته را
هم در نظر
شما میتوانید از کنترلهای Repeater, DataList, DataGrid, GridView برای
نمایش داده به صورت جدول استفاده کنید. همواره سعی کنید سریعترین و
کوچکترین کنترل را برای نیازهایتان انتخاب کنید. برای انتخاب یک کنترل
مناسب ابتدا باید نیازهای خود را مشخص کنید:
اگر به دنبال یک کنترل سریع و ساده میگردید از GridView استفاده کنید
اگر به دنبال یک کنترل سبک وزن و فقط خواندنی میگردید از Repeater استفاده کنید
اگر به دنبال یک کنترل سریع و سبک وزن میگردید از Repeater یا DataList استفاده کنید
اگر به دنبال کنترلی میگردید که بتوانید آن را به شکل الگوی صفحه خود در آورید از Repeater یا DataList استف
با استفاده از application state می توان اشیاء سراسری ( global ) را با
هدف دستیابی توسط هر یک از سرویس گیرندگان ذخیره کرد . عملکرد application
state بر اساس کلاس System.Web.HttpApplicationState می باشد که بطور پیش
فرض از طریق شی از قبل تعبیه شده Application در تمامی صفحات قابل استفاده
است .
طرز کار application state مشابه session state است و از اشیائی با
نوع های مشابه ، نگهداری اطلاعات در سمت سرویس دهنده و گرامر مبتنی بر
دیکشنری استفاده می نماید . استفاده از یک شمارنده سراسری به منظور
نگهداری تعداد دفعاتی که یک عملیات خاص توسط تمامی سرویس گیرندگان یک
برنامه وب انجام می شود ، یک نمونه
Timeout
یکی
دیگر از تنظیمات مهم در ارتباط با session state ، مشخص کردن مدت زمان
timeout است . مقدار در نظر گرفته شده برای خصلت فوق ( تعریف شده در فایل
web.config ) ، مدت زمان انتظار ASP.NET قبل از حذف session را مشخص می
کند ( عدم دریافت هیچگونه درخواست در بازه زمانی مشخص شده ) .
در
نمونه کد زیر به ASP.NET اعلام شده است که اگر پس از گذشت 20 دقیقه
درخواستی از سرویس گیرنده دریافت نگردید ، session آن را حذف کن .
<sessionState
timeout="20" />
خصلت
فوق یکی از مهمترین پارامترهای مدیریت session در برنامه های وب است که
عدم مقداردهی مناسب آن می تو
در این بخش با نحوه ایمن سازی اطلاعات ذخیره شده در view state آشنا خواهیم شد .
اطلاعات view state در یک رشته درهم آمیخته مشابه زیر ذخیره می گردد .
<input type="hidden"
name="__VIEWSTATE"
value="/wEPDwUKMTUyMzMyNzc3NGRklXVE/6qqfC5AWkr1Yw0Xu5IpHg0="
/>
به موازات اضافه کردن اطلاعات بیشتر به view state ، طول این
رشته طولانی تر خواهد شد . با توجه به این که مقدار ذخیره شده در رشته فوق
به صورت متن شفاف نمی باشد ، بسیاری از برنامه نویسان ASP.NET بر این باور
هستند که داده ذخیره شده در view state به صورت رمز شده است .ولی واقعیت
اینترنت
و مهمترین سرویس آن وب علاوه بر این که حیات بشری را در هزاره سوم دستخوش
تحولات فراوانی کرده است ، توانسته است منشاء تحولات گسترده ای در سایر
حوزه های فناوری گردد . در واقع ، تحول در زندگی بشریت مدیون پیشرفت در
سایر حوزه های فناوری است . یکی از این حوزه ها ، صنعت نرم افزار است .
برای
آشنائی با این تحول بد نیست مروری سریع داشته باشیم به گذشته وب و نرم
افزار تا از این رهگذر بتوانیم ضرورت ایجاد فناورهای جدیدی نظیر
Ajax
( برگرفته شده از
Asynchronous JavaScript And XML
) را بهتر درک کنیم .
مروری بر وب ، نرم افزار و تاثیر متقابل آنها بر یکدیگر
مو
XML یک فرمت استاندارد برای ذخیره سازی داده است که امروزه از آن در اکثر
سایت ها به منظور مدیریت محتوا استفاده می گردد . اغلب سایت ها از XML
برای ذخیره سازی داده و از XSL و سایر StyleSheets برای نمایش داده
استفاده می نمایند. فایل های XML را می توان نظیر صفحات وب ایستا از سرویس
دهنده وب درخواست و پس از ارسال، محتویات آنان توسط مرورگر نمایش داده می
شود .
با استفاده از HTTP handlers می توان امکان مشاهده مستقیم
اینگونه فایل ها از طریق مرورگر را غیرممکن نمود . HTTP handlers ، دارای
انعطاف لازم به منظور برخورد با فایل های متفاوت با توجه به نوع انشعاب
آنان می باشد . با استفاده از پتانسیل فوق