Selon une récente enquête de Positive Technologies, les vulnérabilités de fuite de données et les problèmes de sécurité affectent 44 % des applications Web. Des données sensibles sont présentes dans toutes les applications Web et le vol de données se produit lorsque ces données ne sont pas correctement sécurisées. Ainsi, pour une protection appropriée des données, ASP.NET Core utilise des API cryptographiques, en plus de l'algorithme de chiffrement pour protéger les données et éviter toute perte de données. Les données qui ne doivent pas être accessibles à tous dans un environnement partagé peuvent être protégées à l'aide du fournisseur de protection des données ASP.NET.
Dans ce blog, nous expliquerons le fonctionnement du fournisseur de protection des données ASP.NET et le rôle de NCache en tant que fournisseur de stockage de clés.
ASP.NET Core Fournisseur de protection des données
La protection des données est une fonctionnalité d'ASP.NET Core qui vous permet de sécuriser vos données à l'aide de diverses méthodes de cryptage. AES-256-CBC et HMACSHA256 sont les algorithmes standard de protection de la charge utile, respectivement utilisés pour la confidentialité et l'authenticité. Les deux sous-clés essentielles pour ces méthodes sont dérivées d'une clé principale de 512 bits qui est modifiée tous les 90 jours par charge utile.
1 2 3 |
services.AddDataProtection() // use a 14-day lifetime instead of a 90-day lifetime .SetDefaultKeyLifetime(TimeSpan.FromDays(14)); |
La clé générée est stockée/persistante à l'aide de fournisseurs de stockage de clés.
Fournisseurs de stockage de clés
Le système de protection des données utilise un mécanisme de découverte par défaut pour déterminer où les clés cryptographiques doivent persister. Le développeur peut remplacer le mécanisme de découverte par défaut et spécifier manuellement l'emplacement.
1. Fournisseur de stockage de clés par défaut
Par défaut, les clés persistent dans un dossier temporaire spécifié dans Windows dans ASP.NET Core, mais le stockage des clés dans l'emplacement par défaut présente un inconvénient : les clés ne sont pas accessibles par plusieurs instances d'application Web. Ainsi, pour rendre les clés disponibles sur plusieurs serveurs et accessibles par toutes les instances d'application Web, l'utilisateur doit spécifier manuellement un emplacement pour la persistance des clés.
2. NCache en tant que fournisseur de stockage de clés
Pour rendre les clés disponibles sur plusieurs serveurs, ASP.NET Core vous permet de configurer votre fournisseur de stockage de clés. Ici, nous pouvons utiliser NCache en tant que fournisseur de stockage de clés, les clés persistent dans un cache, et puisque NCache est un cache partagé à l'échelle du cluster, ce qui rend les clés disponibles pour toutes les instances d'application Web. En utilisant la méthode, PersistKeysToNCache
.
- PersistKeysToNCache
PersistKeysToNCache
est le point d'entrée où l'utilisateur peut spécifier le nom du cache et la balise de cache où les clés persisteront lors de la configuration NCache en tant que fournisseur de stockage de clés.
Configuration NCache en tant que fournisseur de stockage de clés
NCache fonctionne comme un fournisseur de stockage de clés pour stocker les clés des services de protection des données, et sa configuration est simple et facile. Configurer NCache ASP.NET Core Fournisseur de protection des données, suivez les étapes ci-dessous.
Étape 1: Configurer le service de protection des données
ASP.NET Core fournit un middleware pour la protection des données. Ce middleware doit être ajouté à la collection de services à l'aide de la AddDataProtection()
méthode. Fournir DirectoryInfo
pointant vers le référentiel où les clés doivent être stockées.
- Ouvrez le démarrage.cs dossier de votre projet.
- Dans le
ConfigureServices()
méthode, ajoutez le service suivant :
1 2 3 4 |
public void ConfigureServices(IServiceCollection services) { services.AddDataProtection(); } |
Étape 2 : Installez le package NuGet
La première étape consiste à installer le package NuGet qui permet de partager ASP.NET Core Clés de protection des données dans NCache. Pour installer le package NuGet, ouvrez d'abord Visual Studio et aller à Outils -> Gestionnaire de packages NuGet -> Console du gestionnaire de paquets puis recherchez le package NuGet AspNetCore.DataProtection.NCache
.
Étape 3: Configurer NCache en tant que fournisseur de stockage de clés pour le service de protection des données
Après avoir installé le package NuGet, vous devez d'abord configurer NCache en tant que fournisseur de stockage de clés pour stocker les clés des services de protection des données.
1 2 3 4 5 6 |
public void ConfigureServices(IServiceCollection services) { string cacheName = "demoCache"; string cacheTag = "encryptions_keys_tag"; services.AddDataProtection().PersistKeysToNCache(cacheName, cacheTag); } |
Pour continuer à utiliser NCache en tant que fournisseur de stockage de clés en ASP.NET Core fournisseur de protection des données, implémentez l'exemple d'application ci-dessous :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
using System; using Microsoft.Extensions.DependencyInjection; using Microsoft.AspNetCore.DataProtection; using Alachisoft.NCache.AspNetCore.DataProtection; namespace DataProtectionSample { public class Program { static void Main(string[] args) { string cacheName = "demoLocalCache"; string cacheTag = "MyEncryptionKeys"; var serviceCollection = new ServiceCollection(); serviceCollection.AddDataProtection() .PersistKeysToNCache(cacheName,cacheTag); var services = serviceCollection.BuildServiceProvider(); // create an instance of MyClass using the service provider var instance = ActivatorUtilities.CreateInstance(services); instance.RunSample(); } } Public class MyClass { IDataProtector _protector; // the 'provider' parameter is provided by DI public MyClass(IDataProtectionProvider provider) { _protector = provider.CreateProtector("Contoso.MyClass.v1"); } public void RunSample() { Console.Write("Enter input: "); string input = Console.ReadLine(); // protect the payload string protectedPayload = _protector.Protect(input); Console.WriteLine($"Protect returned: {protectedPayload}"); // unprotect the payload string unprotectedPayload = _protector.Unprotect(protectedPayload); Console.WriteLine($"Unprotect returned: {unprotectedPayload}"); } } } |
Conclusion
ASP.NET Core garantit que les données ajoutées sont sécurisées en utilisant des API cryptographiques en plus des algorithmes de chiffrement, qui sont tout aussi importants. Essentiellement, NCache agit en tant que fournisseur de stockage de clés pour stocker les clés, puis les rend accessibles par plusieurs instances d'application Web. Alors, téléchargez dès maintenant une version d'essai de 60 jours entièrement fonctionnelle et utilisez-la vous-même.
Excellentes informations. Merci d'avoir partagé