افزایش امنیت برنامه‌های وب با استفاده از ASP.NET Core

توسط: محسن درم بخت | منتشر شده در 1404/10/13 | بازدید : 8 بار | زمان مطالعه : 15 دقیقه

مقدمه

با گسترش روزافزون استفاده از وب‌اپلیکیشن‌ها، امنیت به یکی از مهم‌ترین بخش‌های توسعه نرم‌افزار تبدیل شده است. ASP.NET Core فریم‌ورکی قدرتمند از مایکروسافت است که امکانات متعددی برای افزایش امنیت فراهم می‌کند. در این مقاله، به بررسی روش‌های مؤثر تأمین امنیت در برنامه‌های ASP.NET Core خواهیم پرداخت.

۱. استفاده از HTTPS

اولین گام برای محافظت از داده‌های کاربر، استفاده از HTTPS است. در فایل Program.cs یا Startup.cs می‌توانید ریدایرکتی برای فعال‌سازی HTTPS ایجاد کنید:

app.UseHttpsRedirection();

۲. احراز هویت و نقش‌ها با ASP.NET Identity

ASP.NET Identity قابلیتی پیش‌ساخته برای مدیریت کاربران، نقش‌ها، و احراز هویت فراهم می‌کند.

نصب پکیج‌ها موردنیاز:

dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore

پیکربندی در StartUp.cs:

services.AddIdentity<ApplicationUser, IdentityRole>()
    .AddEntityFrameworkStores<AppDbContext>()
    .AddDefaultTokenProviders();

فعال‌سازی middleware:

app.UseAuthentication();
app.UseAuthorization();

۳. جلوگیری از حملات XSS

XSS یا Cross Site Scripting از رایج‌ترین حملات وب است. با استفاده از Razor Pages و اجتناب از درج مستقیم داده‌های آماده نشده، تا حد زیادی می‌توان از این نوع حمله جلوگیری کرد.

مثال ایمن:

<p>Hello @Html.Encode(userInput)</p>

۴. جلوگیری از حملات CSRF

ASP.NET Core به طور پیش‌فرض از حملات CSRF جلوگیری می‌کند. برای استفاده، کافی است از تگ anti-forgery استفاده کنید:

<form asp-controller="Account" asp-action="Login" method="post">
    @Html.AntiForgeryToken()
</form>

۵. استفاده از JWT برای Web API

برای APIهایی که نیاز به احراز هویت دارند، استفاده از JSON Web Token (JWT) روش مناسبی است. ابتدا پکیج زیر را نصب کنید:

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

در تنظیمات سرویس:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = Configuration[❝Jwt:Issuer❝],
            ValidAudience = Configuration[❝Jwt:Audience❝],
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration[❝Jwt:Key❝]))
        };
    });

۶. جلوگیری از اسکن endpointها

با مخفی‌سازی متدهای حساس یا استفاده از Custom Route Templates و محدودسازی بر اساس نقش کاربر، از دسترسی توسط کاربران غیرمجاز جلوگیری کنید.

[Authorize(Roles = ❝Admin❝)]
[HttpPost(❝admin/secure-action❝)]
public IActionResult SecureAction()
{
    // عملیات فقط برای ادمین
}

۷. محدود کردن درخواست‌ها (Rate Limiting)

می‌توانید از middlewareهایی مانند AspNetCoreRateLimit برای جلوگیری از حملات brute-force استفاده کنید.

نمونه پیکربندی:


{
    ❝EnableRateLimiting❝: true,
    ❝GeneralRules❝: [
        {
            ❝Endpoint❝: ❝*❝,
            ❝Period❝: ❝1m❝,
            ❝Limit❝: 30
        }
    ]
}

۸. حذف اطلاعات اضافی در خطاها

در محیط Production، جزئیات دقیق خطاها را نمایش ندهید:

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler(❝/Home/Error❝);
    app.UseHsts();
}

نتیجه‌گیری

امنیت برنامه‌های تحت وب نقش حیاتی در حفاظت از داده‌های کاربران و حفظ اعتبار سامانه دارد. ASP.NET Core ابزارها و قابلیت‌های بسیاری برای توسعه‌دهندگان فراهم کرده است تا با پیاده‌سازی اصولی ساختار، برنامه‌هایی امن و حرفه‌ای تولید کنند.

امنیت برنامه های ASP.NET Core با عناصر دیجیتال آبی در پس‌زمینه مدرن

اگر می‌خواهید یادگیری خود را در زمینه امنیت و ASP.NET Core گسترش دهید، پیشنهاد می‌کنیم دوره‌های ما در دوره امنیت در ASP.NET Core را دنبال کنید.

دوره‌های آنلاین برنامه‌نویسی لیست دوره‌ها