Secondo un recente sondaggio di Positive Technologies, le vulnerabilità legate alla fuga di dati e i problemi di sicurezza colpiscono il 44% delle app web. I dati sensibili sono presenti in tutte le app Web e il furto di dati si verifica quando tali dati sono protetti in modo improprio. Quindi, per un'adeguata protezione dei dati, ASP.NET Core utilizza API crittografiche, oltre all'algoritmo di crittografia per proteggere i dati ed evitare qualsiasi perdita di dati. I dati che non dovrebbero essere accessibili a tutti in un ambiente condiviso possono essere protetti utilizzando il provider di protezione dei dati ASP.NET.
In questo blog, tratteremo come funziona il provider di protezione dei dati ASP.NET e il ruolo di NCache come fornitore di archiviazione chiave.
ASP.NET Core Fornitore di protezione dei dati
La protezione dei dati è una funzionalità di ASP.NET Core che ti consente di proteggere i tuoi dati utilizzando vari metodi di crittografia. AES-256-CBC e HMACSHA256 sono gli algoritmi di protezione del payload standard, utilizzati rispettivamente per la riservatezza e l'autenticità. Le due sottochiavi essenziali per questi metodi derivano da una chiave master a 512 bit che viene modificata ogni 90 giorni per payload.
1 2 3 |
services.AddDataProtection() // use a 14-day lifetime instead of a 90-day lifetime .SetDefaultKeyLifetime(TimeSpan.FromDays(14)); |
La chiave generata viene archiviata/persistente utilizzando i provider di archiviazione delle chiavi.
Principali fornitori di archiviazione
Il sistema di protezione dei dati utilizza un meccanismo di rilevamento predefinito per determinare dove devono persistere le chiavi crittografiche. Lo sviluppatore può ignorare il meccanismo di rilevamento predefinito e specificare manualmente la posizione.
1. Provider di archiviazione chiavi predefinito
Per impostazione predefinita, le chiavi persistono in una cartella temporanea specificata in Windows in ASP.NET Core, ma l'archiviazione delle chiavi nella posizione predefinita presenta uno svantaggio: le chiavi non sono accessibili da più istanze dell'applicazione Web. Pertanto, per rendere le chiavi disponibili su più server e accessibili da tutte le istanze dell'applicazione Web, l'utente deve specificare manualmente una posizione per la persistenza della chiave.
2. NCache come fornitore di archiviazione chiave
Per rendere le chiavi disponibili su più server, ASP.NET Core consente di configurare il provider di archiviazione delle chiavi. Qui possiamo usare NCache come fornitore di archiviazione delle chiavi, le chiavi persistono in una cache e da allora NCache è una cache condivisa a livello di cluster, questo rende le chiavi disponibili per tutte le istanze dell'applicazione web. Usando il metodo, PersistKeysToNCache
.
- PersistKeysToNCache
PersistKeysToNCache
è il punto di ingresso in cui l'utente può specificare il nome della cache e il tag della cache in cui le chiavi persisteranno durante la configurazione NCache come fornitore di archiviazione chiave.
Configurazione NCache come fornitore di archiviazione chiave
NCache funziona come un fornitore di archiviazione chiave per memorizzare le chiavi per i servizi di protezione dei dati e la sua configurazione è semplice e facile. Da configurare NCache ASP.NET Core Fornitore di protezione dei dati, seguire i passaggi seguenti.
Passo 1: Configurare il servizio di protezione dei dati
ASP.NET Core fornisce middleware per la protezione dei dati. Questo middleware deve essere aggiunto alla raccolta di servizi utilizzando il file AddDataProtection()
metodo. Fornire DirectoryInfo
indicando il repository in cui le chiavi dovrebbero essere memorizzate.
- Aprire il avvio.cs file del tuo progetto.
- Nel
ConfigureServices()
metodo, aggiungi il seguente servizio:
1 2 3 4 |
public void ConfigureServices(IServiceCollection services) { services.AddDataProtection(); } |
Passaggio 2: installare il pacchetto NuGet
Il primo passaggio consiste nell'installare il pacchetto NuGet che consente la condivisione di ASP.NET Core Entra in gioco la protezione dei dati NCache. Per installare il pacchetto NuGet, prima apri Di Visual Studio e andare a Strumenti -> Gestione pacchetti NuGet -> Console di gestione dei pacchetti e quindi cercare il pacchetto NuGet AspNetCore.DataProtection.NCache
.
Passo 3: Configurazione NCache come fornitore chiave di archiviazione per il servizio di protezione dei dati
Dopo aver installato il pacchetto NuGet, devi prima configurare NCache come fornitore di archiviazione di chiavi per archiviare le chiavi per i servizi di protezione dei dati.
1 2 3 4 5 6 |
public void ConfigureServices(IServiceCollection services) { string cacheName = "demoCache"; string cacheTag = "encryptions_keys_tag"; services.AddDataProtection().PersistKeysToNCache(cacheName, cacheTag); } |
Per ulteriore uso NCache come provider di storage chiave in ASP.NET Core fornitore di protezione dei dati, implementare l'applicazione di esempio di seguito:
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}"); } } } |
Conclusione
ASP.NET Core garantisce che i dati aggiunti siano protetti utilizzando API crittografiche oltre agli algoritmi di crittografia, che sono ugualmente importanti. Essenzialmente, NCache funge da provider di archiviazione delle chiavi per archiviare le chiavi e quindi renderle accessibili a più istanze di applicazioni Web. Quindi, scarica subito una versione di prova di 60 giorni completamente funzionante e usala tu stesso.
Ottime informazioni. Grazie per la condivisione