پست‌ها

نمایش پست‌ها از فوریه, ۲۰۱۲

جلوگیری از حملات دستکاری آدرس در ASP.NET MVC‌

یکی از ویژگی های ASP.NET MVC نحوه آدرس دهی صفحات و منابع یا همون URL هست که تر و تمیزه و از سوی کاربر قابل فهمه یا به عبارتی SEO Friendly URLs ه.مثلا اگه شما Controller ی بنام Profile داشته باشید که یکی از Action Method های اون Index باشه موقع کار با این Controller آدرس های ارسالی به صورت زیر میشن. www.dotnetdev.info/Profile/2 همه چی آرومه! تا اینکه یه کاربر کنجکاو اون 2 ی آخر URl رو میکنه 3 و… اینجاس که وب سایت شما در مقابل «حمله دستکاری آدرس» یا URL Manipulation Attack یا Parameter Manipulation ضعف داره. و اماچه باید کرد؟ برای جلوگیری از این حمله روش های مختلفی موجود که بعضیاش شکننده و آماتور و بعضیاش حرفه ای ن و البته راه حل نهایی. همونطور که گفتم روش های متفاوتی موجوده که بر میگرده به سناریوی ما که مهمترینش وجود رابطه بین درخواست ارسالی از سمت کاربر و هویت اون کاربره مثلا تو مثال بالا حتما رابطه یک به یک بین پروفایل و کاربر موجوده و یا مثلا یک سیستم اتوماسیون اداری رو در نظر بگیرید بین درخواست های ایجاد شده در سیستم و کاربر رابطه موجوده.خب حالا این رابطه ها کجا ...

ساختن متدهاي كمكي Razor در ASP.NET MVC

تصویر
در نسخه 3 ي  ASP.NET MVC موتور نمايش(view-engine) جديدي بنام Razor اضافه شده ميزان كد نويسي View ها رو كم كرده. يكي از قابليت هاي جالب اون ساختن متدهاي كمكي به صورت اعلانيه(Declarative) كه اين امكان رو ميده در همون فايل View مون بتونيم متدهاي كمكي بسازيم كه ازش در سرتاسر اون View استفاده كنيم. براي مثال فرض كنيد جدولي داريم كه ستوني بنام قيمت(Price) داره حالا ميخواهيم اگه اون ستون كمتر از يك عددي بود اون ستون قرمز بشه و… براي نوشتن اين مثال از سري آموزشي MVC Music Store استفاده ميكنم.براي همين قسمت Model و Controllers رو نمينويسم. براي نوشتن متد كمكي از Helper@ استفاده ميكنم و بقيه مراحل دقيقا مثل نوشتن يك متد عاديه البته تنها فرقش با متد اينه كه بدنه ي متد فقط شامل كدهاي C#‎ نيست. @helper PriceHighlighter(decimal inputPrice, decimal treshold) { if (inputPrice > treshold) { <span style="background-color: red">@inputPrice</span> } else { @inputPrice } } همنط...

نکات شرینک کردن فایل های دیتابیس در SQL Server

تصویر
با ايده گرفتن از Arik Poznanski نتيجه گيريم رو از شرينك كردن فايل هاي ديتابيس اول مينويسم «شرينك كردن در صورت نياز» ما دو نوع شرينك كردن داريم شرينك كردن ديتا فايل (خيلي بد) شرينك كردن لاگ فايل (بد) يه سري مفاهيم اوليه در شرينك هست كه در هر دو نوع شرينك ثابته اول اين مفاهيم رو مرور كنيم. وقتي فايل هاي ديتابيس ميخوان بزرگ بشن بر اساس Autogrowth ي كه ست كرديد اون مقدار مورد نظر براي اطمينان از نداشتن بد سكتور بايد zero byte فرمت بشه حال فرض كنيد رشد بانك به صورت درصدي باشه (كه به صورت پيشفرض هست) و ديتابيس شما گيگا بايتي باشه چه حجم زيادي بايد zero byte فرمت بشه و اين يعني افت Performance. البته خبر خوب اينه كه عمل بزرگ شدن فايل از SQL Server 2005 به بعد فقط براي ديتا فايل با zero byte فرمت انجام نميشه ( Instant File Initialization ).همه اينا رو گفتم تا برسم به اينجا كه بزرگ شدن فايل يه عمليات زمانبريه پس اگه شما از نظر حجم Storage مشكلي نداريد تا جاي كه امكان داره فايلهاي ديتابيستون رو شرينك نكنيد. چرا شرينك كردن ديتا فايل خيلي بده! وقتي شما ديتا فايلتون رو ...