عمومی

رمزگذاری و هویت سنجی داده های سایت توسط ماژول MachineKey در IIS Manager 7.5

این ماژول به کاربران کمک می کند تا از داده های view stat و کوکی های هویت سنجی (از طریق تعریف رمزهای عبور) محافظت کنید. با تعریف این ماژول تگی با نام <MachineKey > در فایل web.config ساخته می شود. Viewstat نیز تکنیکی است که در صفحات وب asp.net به منظور ذخیره سازی عملیات postback مورداستفاده قرار می گیرد تا در دفعات بعدی نیازی به وارد کردن مجدد این اطلاعات نباشد.

   به عنوان مثال فرض کنید فرمی را پر و سپس ارسال می کنید و سرور خطایی مبنی بر وجود اطلاعات غلط را باز می گرداند. بنابراین بایستی سایر اطلاعات را اصلاح و مجدد وارد کنید. در این حالت می توان گفت که سایت شما از  viewstat استفاده نکرده است. اما با فعال بودن viewstat اطلاعات فرم هنگام تحویل به سرور پاک نخواهند شد. در واقع view stat اطلاعات ارسالی کاربر به سرور را نگهداری می کند. درصورتیکه راهنمای <%@ Page EnableViewState=”false” %>  دارای مقدار false باشد view stat غیرفعال و اگر true باشد فعال خواهد بود.

کار اصلی ماژول MachineKey تولید کلیدهای تصادفی برای اعتبار سنجی ، رمزگذاری /رمزگشایی viewstate است .

viewstate  مفهومی در برنامه های ASP.NET برای حفظ وضعیت کنترل های صفحه در هنگام PostBack هست.

صفات  MachineKey به شکل کلید های  زیر می باشند که نمونه ای از تعریف آن در ادامه ی مقاله قابل مشاهده می باشد. این کلیدها در تگ MachineKey موجود در فایل web.config قرار داده می شوند.

برای درک بهتر کلید های MachineKey ابتدا باید با مفهوم  MAC (Message Authentication Check) آشنا شویم :

MAC قابلیتی از  asp.net است که تنظیمات یک فرم یا اطلاعات وارد شده در آن (یا همان view state)را تحلیل کرده تا از صحت آنها مطمئن شود و  از دستکاری شدنشان هنگام بازگشت از سرور جلوگیری به عمل آید.

کلید Validation :این کلید کد پیام  MAC را تحلیل کرده تا از جامعیت و درستی داده ها اطمینان حاصل کند.

کلید Decryption :از آن برای رمزگذاری و رمزگشایی داده های فرم ها و viewstate ها استفاده می شود.

خاصیت این کلید رمزگذاری  تنظمیات سرویس هایی مانند viewstate ، هویت سنجی اطلاعات وارد شده در فرم ها ، اعضا و role آنها و شناسایی افراد ناشناس می باشد.

همچنین کلیه viewstate ها در صفحه به صورت رمز شده ذخیره می شوند و هر برنامه دات نت در ابتدای اجرا یک کلید برای رمز کردن و رمزگشایی viewstate ها به صورت تصادفی ایجاد می کند.

می توان گفت Machine key یک کلید رمزگشایی ۲۵۶ بیتی و همچنین یک کلید اعتبار سنجی ۵۱۲ بیتی تولید می نماید که به رشته ای از کاراکترهای هگزادسیمال تبدیل می شوند.

نمونه کد تولید شده بعد از ایجاد یک machineKey به شکل زیر است :

 [pre]

<machineKey

validationKey="82708AE9EC445B49808F129CDC62F0A2E6A50EF6

۵۸۱F62A30F0E1ECAD6CDA02DC

A3DC4D62D7CF2" decryptionKey="1D316846D48920755B4880BF390D4C25C9E8F29DFC2A68

</۸۸F4D67FC4D48F۸CFA" validation="SHA1" decryption="AES"

 [/pre]

نحوه ی ساخت  machineKey :

در صورتیکه از کاربران ایران هاست می باشید جهت وارد شدن به IIS Manger به لینک زیر مراجعه نمایید :

http://support.iranhost.com/KB/a153/iis.aspx?KBSearchID=4874

بعد از ورود به IIS Manager بر روی آیکن machinekey کلیک راست و گزینه ی Open feature را انتخاب کنید.

در صفحه ی machine key روش رمزگذاری را از لیست Encryption Method انتخاب کنید.حالت پیش فرض آن Auto می باشد.

تنظیمات مورد نیاز برای کلیدهای اعتبار سنجی و رمزگذاری را انتخاب کنید.

حال بر روی Generate Keys کلیک و سپس Apply  را انتخاب نمایید.

انتخاب متد (روش)رمزگذاری:

متدهای زیر در machinekey  برای رمز نگاری اطلاعات کاربر قابل استفاده می باشند :

AES (Advanced encryption standard) پیاده سازی آن آسان و به هزینه کمی نیاز دارد.اندازه ی آن متغیر و در اندازه های ۱۲۸، ۱۹۲،۲۵۶ بیتی می باشد.

MD5 (message digest 5 )این متد ۱۲۸  بیت به نام  digest تولید می کند. این روش در مقابل ویروس یا سایر برنامه های مخرب حفاظتی مناسب را فراهم می آورد.

SHA1 (Secure Hash Algorithm) : این روش از متد MD5 امن تر می باشد چرا که تعداد ۱۶۰ بیت digest تولید می کند. به دلیل وجود امنیت بیشتر توصیه می گردد که  از این روش رمزگذاری استفاده نمایید.

TrippleDES (Tripple data encryption standard)این متد نسخه ی پایین تر روش DES است که در پاراگراف های بالا توضیح داده شد و در مقایسه با DES تا ۳ برابر از آن کند تر می باشد.  ولی به دلیل استفاده از ۱۹۲ بیت امنیت بیشتری را ارائه می دهد.

 تولید کلید اعتبار سنجی در زمان اجرا :

این حالت به طور پیش فرض فعال و زمانی مورد استفاده قرار می گیرد که ASP.Net بخواهد فرآیند تولید و ذخیره ی کلید تصادفی را به طور همزمان انجام دهد. این روش آخرین وضعیت view stat یا هویت سنجی کاربران هنگام پردازش داده ها را در نظر می گیرد .

برای انجام این تنظیم کافی است  درIIS Manager بر روی machine key در feature view دابل کلیک نمایید.

در صفحه ی machine key و قسمت validation key  گزینه ی Automatically generate at runtime را انتخاب و در نهایت بر روی Apply کلیک کنید.

 لازم به یادآوری است در سرویس های ایران هاست از آنجاییکه  به هر سایت یک application pool اختصاصی داده می شود،  در صورتی که برنامه شما ۲۰ دقیقه idle باشد کل application pool نیز idle بوده و recycle می شود و session time out اتفاق می افتد.راه حل این مشکل استفاده از کلید ثابت می باشد که برای این کار می توان یک خط به شکل زیر به web.config اضافه کنید. برای اطلاع از مقادر کلیدها در گوگل جستجو نمایید.

<machineKey validationKey=”xxxxxxx” decryptionKey=”yyyyyyyy” validation=”SHA1″/>

یکی از کاربردهای کلیدهای تعریف شده در <machinekey> مقابله با حملات XSS می باشد.

 فرض کنید اطلاعات فرم کاربر ارسال شده است. اگر در فیلدهای این فرم به جای اطلاعات مرسوم، کدهای Client Side (بدون رمز نگاری شدن) وارد شده باشند، کاربر به راحتی در معرض آسیب پذیری خطرناکی قرار می گیرد.
فرض کنید فرد مهاجم، عبارت <script>alert(document.cookie);</script> را وارد کرده باشد.
این عبارت به عنوان یک مقدار ذخیره شده و یک کوکی تصدیق هویت یا یک کوکی که حاوی اطلاعات مهمی (مثلا شماره حساب بانکی) از کاربر هست نیز بر روی سیستم وی ذخیره شده است.
حال فرض کنید فرد مهاجم قسمتی را برای نمایش اطلاعات کاربر در نظر گرفته است تا در زمان لود صفحه این اطلاعات (مانند شماره حساب) را مشاهده کند. با تغییر بخش هایی از کد نویسی توسط هکر، این اطلاعات به وی ارسال خواهد شد.

هر عمل رمزنگاری و رمزگشایی زمان مخصوص به خود را اشغال خواهد کرد اما دارا بودن امنیت برنامه در مقایسه با این زمان مبحث مهم تری بوده و استفاده از آن ضروری می باشد.

منابع :

http://aspnetresources.com

http://technet.microsoft.com

مدیر بلاگ

مشخصات مدیر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن
بستن