Защитите приложения .NET 6/7 со встроенными функциями безопасности

Защитите приложения .NET 6/7 со встроенными функциями безопасности

21 марта 2023 г.

Чтобы помочь разработчикам в разработке безопасных приложений, самая последняя версия платформы .NET, .NET 6 имеет различные встроенные функции безопасности. Безопасность является важнейшим компонентом разработки программного обеспечения.

В этом посте мы рассмотрим некоторые из наиболее важных функций безопасности .NET 6 и их практическое применение.

Основная идентификация ASP.NET

Интегрированный механизм аутентификации и авторизации, известный как ASP.NET Core Identity, позволяет программистам контролировать аутентификацию и авторизацию пользователей в своих приложениях. Он предоставляет такие опции, как авторизация на основе ролей, управление паролями, двухфакторная аутентификация и регистрация пользователей.

В качестве иллюстрации рассмотрим следующее приложение удостоверения ASP.NET Core:

public async Task<IActionResult> Login(LoginViewModel model)
{
    var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false);
    if (result.Succeeded)
    {
        return RedirectToAction("Index", "Home");
    }
    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
    return View(model);
}

Защита от подделки межсайтовых запросов (CSRF)

Встроенная система безопасности .NET 6 защищает от угроз межсайтовой подделки запросов (CSRF). Эта функция гарантирует, что только люди, получившие разрешение, могут отправлять формы и выполнять действия от имени пользователя.

Ниже вы найдете иллюстрацию защиты CSRF в действии на странице Razor:

<form method="post">
    @Html.AntiForgeryToken()
    <input type="text" name="username" />
    <input type="password" name="password" />
    <button type="submit">Login</button>
</form>

Применение HTTPS

Поддержка обязательного HTTPS для всех запросов включена в .NET 6. Благодаря тому, что все соединения между клиентом и сервером шифруются, эта функция снижает вероятность перехвата данных и манипулирования ими.

Ниже вы найдете иллюстрацию того, как заставить приложение ASP.NET Core использовать HTTPS:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...

    app.UseHttpsRedirection();

    // ...
}

API защиты данных (DPAPI)

Это помогает программистам предотвратить несанкционированный доступ к конфиденциальным данным, таким как пароли и токены аутентификации.

Ниже приведен пример использования DPAPI для защиты данных:

public string ProtectData(string dataToProtect)
{
    var dataBytes = Encoding.UTF8.GetBytes(dataToProtect);
    var protectedData = ProtectedData.Protect(dataBytes, null, DataProtectionScope.CurrentUser);
    return Convert.ToBase64String(protectedData);
}

Политики авторизации

В .NET 6 разработчики могут определять, какие действия может выполнять пользователь, в зависимости от его роли или других критериев, используя политики авторизации. Например, ограничьте доступ к определенным страницам или функциям вашего приложения в зависимости от роли пользователя.

Ниже приведен пример использования политик авторизации в приложении ASP.NET Core:

[Authorize(Policy = "AdminOnly")]
public IActionResult AdminPage()
{
    // ...
}

services.AddAuthorization(options =>
{
    options.AddPolicy("AdminOnly", policy =>
    {
        policy.RequireRole("Admin");
    });
});

Защита от SQL-инъекций

Атаки с внедрением SQL – это распространенные атаки, при которых вредоносный код внедряется в SQL-запросы приложения. .NET 6 защищает от атак путем внедрения кода SQL с помощью параметризованных запросов.

Вот пример того, как использовать параметризованные запросы для защиты от атак путем внедрения кода SQL:

var sql = "SELECT * FROM Users WHERE UserName = @UserName";
using (var connection = new SqlConnection(connectionString))
{
    var command = new SqlCommand(sql, connection);
    command.Parameters.AddWithValue("@UserName", username);
    connection.Open();
    var reader = command.ExecuteReader();
    // ...
}

Безопасные файлы cookie

Файлы cookie часто используются для управления сеансом, аутентификации и хранения пользовательских данных. Для устранения таких угроз, связанных с файлами cookie, как кража и фальсификация, .NET 6 предлагает поддержку безопасных файлов cookie. Ниже приведен пример кода безопасного файла cookie, используемого в приложении ASP.NET Core:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
        options.Cookie.HttpOnly = true;
    });

Заключение

Подводя итог, можно сказать, что платформа содержит несколько встроенных функций безопасности, помогающих разработчикам разрабатывать безопасные и защищенные приложения. Используйте эти функции для защиты своих приложений от типичных угроз безопасности и уязвимостей.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE