Защитите приложения .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;
});
Заключение
Подводя итог, можно сказать, что платформа содержит несколько встроенных функций безопасности, помогающих разработчикам разрабатывать безопасные и защищенные приложения. Используйте эти функции для защиты своих приложений от типичных угроз безопасности и уязвимостей.
Оригинал