Les applications Web d'aujourd'hui sont vulnérables à diverses menaces de sécurité. Par conséquent, vous devez mettre en place des stratégies pour sauvegarder vos données et protéger votre application contre les attaques. La sécurisation de votre application nécessite une approche proactive combinée à la mise en œuvre des meilleures pratiques recommandées, comme indiqué dans cet article.
Cet article examine six stratégies que vous pouvez adopter pour sécuriser vos applications Web, en tirant parti des protections disponibles dans ASP.NET Core. Pour utiliser les exemples de code illustratifs fournis dans cet article, Visual Studio 2022 doit être installé sur votre système. Si vous n'en avez pas déjà une copie, vous pouvez télécharger Visual Studio 2022 ici.
Créer un projet ASP.NET Core Web App MVC dans Visual Studio 2022
Pour créer un projet d'API Web ASP.NET Core dans Visual Studio 2022, suivez les étapes décrites ci-dessous.
- Lancez l'IDE Visual Studio 2022.
- Cliquez sur « Créer un nouveau projet ».
- Dans la fenêtre « Créer un nouveau projet », sélectionnez « ASP.NET Core Web App (Model-View-Controller) » dans la liste des modèles affichés.
- Cliquez sur Suivant.
- Dans la fenêtre « Configurer votre nouveau projet », précisez le nom et l'emplacement du nouveau projet. Cochez éventuellement la case « Placer la solution et le projet dans le même répertoire », selon vos préférences.
- Cliquez sur Suivant.
- Dans la fenêtre « Informations supplémentaires » ci-dessous, sélectionnez « .NET 8.0 (Support à long terme) » comme version du framework et décochez la case « Utiliser les contrôleurs », car nous utiliserons un minimum d'API dans ce projet.
- Ailleurs dans la fenêtre « Informations supplémentaires », laissez le « Type d'authentification » défini sur « Aucun » (valeur par défaut) et assurez-vous que les cases « Activer la prise en charge de l'API ouverte », « Configurer pour HTTPS », « Ne pas utiliser de niveau supérieur » déclarations » et « Activer Docker » restent décochées. Nous n’utiliserons aucune de ces fonctionnalités ici.
- Cliquez sur Créer.
Nous utiliserons ce projet MVC d'application Web ASP.NET Core pour illustrer l'utilisation des fonctionnalités de sécurité intégrées d'ASP.NET Core dans les sections ci-dessous.
Appliquer HTTPS dans ASP.NET Core
SSL, ou Secure Sockets Layer, est un protocole qui facilite une communication sûre et sécurisée entre les clients et les serveurs sur un réseau en permettant de crypter la communication. Vous pouvez imposer l'utilisation de HTTPS pour sécuriser votre application en redirigeant les requêtes HTTP vers HTTPS.
L'extrait de code suivant montre comment configurer la sécurité HTTPS pour votre application dans le fichier Program.cs.
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
options.HttpsPort = 443;
});
Utiliser la sécurité du transport HTTP Strict dans ASP.NET Core
HTTP Strict Transport Security, ou HSTS, empêche les attaques de protocole de rétrogradation et le détournement de cookies en garantissant que le serveur Web communique à l'aide d'une connexion HTTPS et en bloquant toutes les connexions HTTP non sécurisées. Notez que le moteur d'exécution ASP.NET Core ajoute le middleware HSTS par défaut.
L'extrait de code suivant illustre comment nous pouvons profiter de ce middleware pour imposer cette restriction de sécurité.
services.AddHsts(options =>
{
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(7);
});
Empêcher les attaques de falsification de requêtes intersites dans ASP.NET Core
Les attaques de falsification de requêtes intersites (CSRF) incitent un utilisateur à effectuer des activités malveillantes alors qu'il est connecté à une application. Ces attaques sont le plus souvent réalisées en trompant les utilisateurs avec des e-mails de phishing pour les attirer vers des sites Web malveillants, où ils utilisent les privilèges d'un utilisateur authentifié pour voler des fonds sur le compte bancaire d'une victime, par exemple, ou effectuer des achats en ligne en utilisant la carte de crédit de la victime.
Vous pouvez protéger les utilisateurs de votre application ASP.NET Core contre les attaques CSRF à l'aide de jetons anti-contrefaçon. Lorsque vous incluez des jetons anti-contrefaçon dans votre application, deux valeurs différentes sont envoyées au serveur à chaque POST. L'une des valeurs est envoyée en tant que cookie du navigateur et l'autre est soumise en tant que données de formulaire. À moins que le serveur ne reçoive les deux valeurs, il refusera d’autoriser la demande.
Pour utiliser des jetons anti-contrefaçon dans votre application ASP.NET Core, incluez-les dans le fichier Program.cs comme indiqué dans l'extrait de code ci-dessous.
builder.Services.AddAntiforgery(options =>
{
options.FormFieldName = "ThisIsAnAntiForgeryField";
options.HeaderName = "ThisIsAnAntiForgeryHeader";
options.Cookie.Name = "ThisIsAnAntiForgeryCookie";
});
Empêcher les scripts intersites dans ASP.NET Core
Le cross-site scripting (XSS) fait référence à l'acte d'injecter un script malveillant à l'aide des champs de saisie ou de formulaire d'une page Web de votre application, dans le but de voler des données sensibles telles que des informations de connexion ou des cookies. Lorsqu'un attaquant souhaite lancer une attaque XSS, il envoie souvent un lien malveillant à un utilisateur, puis tente de l'inciter à cliquer sur le lien. Vous pouvez contrecarrer les scripts intersites à l’aide du codage d’URL, du codage HTML et des expressions régulières pour valider et nettoyer les entrées.
Empêcher l'injection SQL dans ASP.NET Core
L'injection SQL est un problème de sécurité majeur. L'injection SQL se produit lorsqu'un attaquant insère des commandes SQL malveillantes dans vos requêtes SQL créées dynamiquement. De telles attaques sont rendues possibles par des failles de sécurité dans les requêtes de bases de données, conduisant à l'exposition d'informations sensibles. Vous pouvez contrecarrer l'injection SQL en utilisant des procédures stockées et des requêtes paramétrées au lieu de requêtes SQL dynamiques, et en validant les entrées utilisateur pour supprimer les caractères potentiellement malveillants.
Créer des pages d'erreur personnalisées dans ASP.NET Core
Si vous n'implémentez pas un code de gestion des erreurs approprié dans votre application, vous risquez d'exposer par inadvertance des informations sensibles telles que des données de configuration, des noms de tables ou même des numéros de sécurité sociale. Pour éviter cela, vous pouvez implémenter une page Web d'erreur personnalisée dans votre application afin que chaque fois qu'une erreur se produit, la page personnalisée affiche des messages d'erreur sécurisés au lieu des messages d'erreur potentiellement compromettants que votre application pourrait générer.
En plus de la page Web d'erreur personnalisée, vous devez créer un filtre d'exception personnalisé en étendant la classe ExceptionFilterAttribute et en remplaçant la méthode OnException. L'extrait de code ci-dessous montre comment rediriger l'itinéraire vers la page Web d'erreur personnalisée lorsqu'une erreur se produit.
var result = new RedirectToRouteResult(
new RouteValueDictionary
{
{"controller", "Error"}, {"action", "MyCustomError"}
});
Enfin, écrivez le morceau de code suivant dans le fichier Program.cs pour enregistrer le gestionnaire d'exceptions auprès du pipeline de traitement des demandes.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/MyCustomError");
}
La sécurisation des applications implique tout, depuis la garantie de configurations appropriées jusqu'à la prévention de l'exposition des données sensibles. Les six meilleures pratiques décrites ci-dessus ne sont qu’un début. Pour éviter d'exposer des données sensibles, vous devez non seulement utiliser HTTPS, mais également chiffrer les données au repos et vous abstenir de stocker des données sensibles sous une forme non chiffrée dans une base de données ou n'importe où dans l'application.
Vous devez également surveiller régulièrement les journaux d'activité générés par votre application. L'examen des journaux peut vous donner des informations sur la sécurité, les performances et d'autres problèmes liés à votre application.
Copyright © 2024 IDG Communications, Inc.



GIPHY App Key not set. Please check settings