چگونگی بررسی خطای ASP.NET Viewstate's MAC

برنامه نویسی و کدینگ > ASP / ASP.Net

 MAC مخفف Message Authentication Code سیستمی برای تصدیق عدم دستکاری شدن دیتای در حال تبادل بین وب سرور و سیستم کاربر می باشد.

Viewstate نیز راهکار ASP.NET برای نگه داشتن دیتای فرم ها در postback ها می باشد.(در صورت عدم آشنایی با مفهوم postback این لینک را بررسی فرمایید http://barnamenevis.org/showthread.php?143553-PostBack-%DA%86%DB%8C%D9%87%D8%9F )

دیتای فرم ASP.NET ، به شکل کدگذاری شده ی )base-64 base64 تکنولوژی کدگذاری می باشد) در داخل مقداری(value ای) پنهان شده در داخل فرم ASP.NET، با نام _Viewstate قرار داده/ذخیره می شود.

MAC جهت جلوگیری از تغییر و دستکاری(توسط هکر) در دیتای VIEWSTATE طراحی شده است.

ASP.NET با بررسی دیتای موجود در viewstate و استفاده از کلید تایید اعتبار پنهانی(Secret Validation Key)  یک hash از آن دیتا با استفاده از الگوریتم SHA-1 می سازد. مقدار آن hash همان MAC می باشد و ASP.NET آن را در داخل فرم ارسالی به کاربر قرار می دهد.

وقتی postback رخ می دهد مرورگر شما دیتای فرم،viewstat  و MAC value را به وب سرور ارسال می کند. ASP.NET با بررسی دیتای viewstate ارسال شده، و سپس مقایسه آن MAC value با MAC value موجود در محتوای POST (درخواستی که از سمت مرورگر کاربر به وب سرور جهت دریافت صفحات ارسال می شود) مقایسه می کند. اگر هر دو MAC value یکسان باشند در نتیجه ASP.NET متوجه می شود کسی viewstate را دستکاری نکرده است. و در غیر اینصورت ASP.NET خواهد پنداشت که کسی دیتای viewstate را دستکاری کرده است و در نتیجه پیغام خطای invalid_viewstate را بازخواهد گرداند.

در چه شرایطی ممکن است MAC value متفاوت از آن چیزی باشد که  سرور انتظار آن را دارد؟

دلایل متعددی ممکن است باعث عدم تطابق MAC value با آن چه ASP.NET انتظار دارد شود.

·         اقدام هکری برای تغییر دیتای viewstate

·         دیتای فرم در هنگام ارسال به سرور قطع شده باشد(به علت timeout، porxy server و ...)

·         ارجاع فرم به یک وب سرور دیگر( در صورت ست نبودن machinekey یکسان در هر دو سرور mac value های ایجاد شده توسط هر سرور متفاوت خواهد بود)

·         متفاوت بودن validation key  استفاده شده برای ساختن mac قبلی با validation key ای که برای ساختن MAC جدید استفاده می شود.

 

Add Feedback