۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

۶ بهترین روش امنیتی برای ASP.NET Core

بهترین شیوه ها و حفاظت های داخلی را برای جلوگیری از حملات و محافظت از داده های حساس در برنامه های وب ASP.NET Core خود بیاموزید.

بهترین شیوه ها و حفاظت های داخلی را برای جلوگیری از حملات و محافظت از داده های حساس در برنامه های وب ASP.NET Core خود بیاموزید.

برنامه های کاربردی وب امروزی در برابر انواع تهدیدات امنیتی آسیب پذیر هستند. بنابراین، شما باید استراتژی های خود را برای محافظت از داده های خود و محافظت از برنامه خود در برابر حملات داشته باشید. ایمن سازی برنامه شما نیازمند یک رویکرد پیشگیرانه همراه با اجرای بهترین شیوه های توصیه شده است که در این مقاله بحث شده است.

این مقاله به بررسی شش استراتژی می‌پردازد که می‌توانید برای ایمن کردن برنامه‌های وب خود، با بهره‌گیری از حفاظت‌های موجود در ASP.NET Core، اتخاذ کنید. برای استفاده از نمونه کدهای گویا ارائه شده در این مقاله، باید Visual Studio 2022 را در سیستم خود نصب کنید. اگر قبلاً نسخه‌ای ندارید، می‌توانید Visual Studio 2022 را از اینجا دانلود کنید.

یک پروژه ASP.NET Core Web App MVC در Visual Studio 2022 ایجاد کنید

برای ایجاد یک پروژه ASP.NET Core Web API در Visual Studio 2022، مراحل ذکر شده در زیر را دنبال کنید.

  1. Visual Studio 2022 IDE را راه اندازی کنید.
  2. روی “ایجاد پروژه جدید” کلیک کنید.
  3. در پنجره “ایجاد پروژه جدید”، “ASP.NET Core Web App (Model-View-Controller)” را از لیست الگوهای نمایش داده شده انتخاب کنید.
  4. بعدی را کلیک کنید.
  5. در پنجره “پیکربندی پروژه جدید خود”، نام و مکان پروژه جدید را مشخص کنید. به صورت اختیاری، بسته به تنظیمات برگزیده خود، کادر انتخاب «قرار دادن راه حل و پروژه در یک فهرست» را علامت بزنید.
  6. بعدی را کلیک کنید.
  7. در پنجره «اطلاعات اضافی» که در ادامه نشان داده شده است، «.NET 8.0 (Long Term Support)» را به عنوان نسخه فریمورک انتخاب کنید و تیک کادری که می گوید «استفاده از کنترلرها» را بردارید، زیرا ما در این مورد از حداقل API استفاده خواهیم کرد. پروژه.
  8. در جای دیگری از پنجره «اطلاعات اضافی»، «نوع احراز هویت» را روی «هیچ‌کدام» (پیش‌فرض) بگذارید و مطمئن شوید که کادرهای «فعال کردن پشتیبانی Open API»، «پیکربندی برای HTTPS»، «Do not use» را انتخاب کنید. بیانیه های سطح بالا” و “فعال کردن داکر” علامت نخورده باقی می مانند. ما در اینجا از هیچ یک از این ویژگی ها استفاده نخواهیم کرد.
  9. روی ایجاد کلیک کنید.
Civet: TypeScript بهتری؟

ما از این پروژه ASP.NET Core Web App MVC برای نشان دادن استفاده از ویژگی‌های امنیتی داخلی ASP.NET Core در بخش‌های زیر استفاده خواهیم کرد.

اجرای HTTPS در هسته ASP.NET

SSL، یا لایه سوکت‌های امن، پروتکلی است که ارتباط امن و ایمن بین کلاینت‌ها و سرورها را از طریق شبکه با امکان رمزگذاری کردن ارتباطات تسهیل می‌کند. می‌توانید با هدایت درخواست‌های HTTP به HTTPS، استفاده از HTTPS را برای ایمن‌سازی برنامه‌تان اعمال کنید.

قطعه کد زیر نشان می دهد که چگونه می توانید امنیت HTTPS را برای برنامه خود در فایل Program.cs پیکربندی کنید.

builder.Services.AddHttpsRedirection(options =>
{
    options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
    options.HttpsPort = 443;
});

از HTTP Strict Transport Security در هسته ASP.NET استفاده کنید

HTTP Strict Transport Security یا HSTS، با اطمینان از اینکه سرور وب با استفاده از یک اتصال HTTPS ارتباط برقرار می کند و با مسدود کردن همه اتصالات HTTP ناامن، از حملات پروتکل کاهش رتبه و ربودن کوکی ها جلوگیری می کند. توجه داشته باشید که موتور زمان اجرا ASP.NET Core میان افزار HSTS را به طور پیش فرض اضافه می کند.

قطعه کد زیر نشان می دهد که چگونه می توانیم از مزیت این میان افزار برای اعمال این محدودیت امنیتی استفاده کنیم.

services.AddHsts(options =>
{
   options.IncludeSubDomains = true;
   options.MaxAge = TimeSpan.FromDays(7);
});

جلوگیری از حملات جعل درخواست بین سایتی در ASP.NET Core

درخواست بین سایتی حملات جعل (CSRF) کاربر را فریب می دهد تا در حالی که کاربر به یک برنامه وارد شده است، فعالیت های مخرب انجام دهد. این حملات معمولاً با فریب دادن کاربران با ایمیل‌های فیشینگ برای فریب دادن آنها به وب‌سایت‌های مخرب انجام می‌شوند، جایی که آنها از امتیازات یک کاربر تأیید شده برای سرقت وجوه از حساب بانکی قربانی استفاده می‌کنند، به عنوان مثال، یا با استفاده از کارت اعتباری قربانی، خریدهای آنلاین انجام می‌دهند.

به نوعی OpenSearch موفق شده است

می توانید با استفاده از توکن های ضد جعل از کاربران برنامه ASP.NET Core خود در برابر حملات CSRF محافظت کنید. هنگامی که توکن های ضد جعل را در برنامه خود قرار می دهید، با هر POST دو مقدار متفاوت به سرور ارسال می شود. یکی از مقادیر به عنوان کوکی مرورگر ارسال می شود و یکی به عنوان داده فرم ارسال می شود. مگر اینکه سرور هر دو مقدار را دریافت کند، از ادامه درخواست خودداری می کند.

برای استفاده از توکن‌های ضد جعل در برنامه ASP.NET Core، آن‌ها را همانطور که در قطعه کد زیر نشان داده شده است، در فایل Program.cs قرار دهید.

builder.Services.AddAntiforgery(options =>
{
    options.FormFieldName = "ThisIsAnAntiForgeryField";
    options.HeaderName = "ThisIsAnAntiForgeryHeader";
    options.Cookie.Name = "ThisIsAnAntiForgeryCookie";
});

جلوگیری از اسکریپت بین سایتی در ASP.NET Core

اسکریپت بین سایتی (XSS) به عمل تزریق یک اسکریپت مخرب با استفاده از فیلدهای ورودی یا فرم یک صفحه وب در برنامه شما، با هدف سرقت اطلاعات حساس مانند اعتبار ورود به سیستم یا کوکی ها اشاره دارد. هنگامی که یک مهاجم می خواهد یک حمله XSS را راه اندازی کند، اغلب یک پیوند مخرب را برای کاربر ارسال می کند و سپس سعی می کند شخص را ترغیب کند تا روی پیوند کلیک کند. می‌توانید با استفاده از رمزگذاری URL، رمزگذاری HTML و عبارات معمولی برای اعتبارسنجی و پاکسازی ورودی‌ها، اسکریپت‌های بین سایتی را خنثی کنید.

جلوگیری از تزریق SQL در هسته ASP.NET

تزریق SQL یک نگرانی امنیتی بزرگ است. تزریق SQL زمانی اتفاق می افتد که یک مهاجم دستورات مخرب SQL را در پرس و جوهای SQL ایجاد شده پویا وارد می کند. چنین حملاتی توسط آسیب پذیری های امنیتی در پرس و جوهای پایگاه داده فعال می شوند که منجر به افشای اطلاعات حساس می شود. می‌توانید با استفاده از رویه‌های ذخیره‌شده و پرس‌و‌جوهای پارامتری شده به‌جای جستارهای پویا SQL، و با تأیید اعتبار ورودی کاربر برای حذف کاراکترهای مخرب احتمالی، تزریق SQL را خنثی کنید.

درس های آموخته شده از ایمن سازی Kubernetes در ابر

صفحات خطای سفارشی را در ASP.NET Core ایجاد کنید

اگر کد مدیریت خطا را در برنامه خود پیاده سازی نکنید، ممکن است ناخواسته اطلاعات حساسی مانند داده های پیکربندی، نام جداول یا حتی شماره های تامین اجتماعی را در معرض نمایش قرار دهید. برای جلوگیری از این امر، می‌توانید یک صفحه وب خطای سفارشی را در برنامه خود پیاده‌سازی کنید تا هر زمان خطایی رخ داد، صفحه سفارشی به جای پیام‌های خطای احتمالی که ممکن است برنامه شما ایجاد کند، پیام‌های خطای ایمن را نمایش دهد.

علاوه بر صفحه وب خطای سفارشی، باید با گسترش کلاس ExceptionFilterAttribute و لغو روش OnException، یک فیلتر استثنای سفارشی ایجاد کنید. قطعه کد زیر نحوه هدایت مسیر را به صفحه وب خطای سفارشی در صورت بروز خطا نشان می دهد.

var result = new RedirectToRouteResult(
new RouteValueDictionary
{
    {"controller", "Error"}, {"action", "MyCustomError"}
});

در نهایت، کد زیر را در فایل Program.cs بنویسید تا کنترل کننده استثنا در خط لوله پردازش درخواست ثبت شود.

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/MyCustomError");
}

ایمن سازی برنامه ها شامل همه چیز است، از اطمینان از تنظیمات مناسب تا جلوگیری از افشای داده های حساس. شش روش برتر ذکر شده در بالا فقط یک شروع است. برای جلوگیری از افشای داده های حساس، باید نه تنها از HTTPS استفاده کنید، بلکه باید داده ها را در حالت استراحت رمزگذاری کنید و از ذخیره داده های حساس به شکل رمزگذاری نشده در پایگاه داده یا هر جایی از برنامه خودداری کنید.

شما همچنین باید به طور معمول گزارش های فعالیت تولید شده توسط برنامه خود را نظارت کنید. بررسی گزارش‌ها می‌تواند بینش‌هایی درباره امنیت، عملکرد و سایر مسائل در برنامه‌تان به شما بدهد.