De acordo com uma pesquisa recente da Positive Technologies, vulnerabilidades de vazamento de dados e problemas de segurança afetam 44% dos aplicativos da web. Dados confidenciais estão presentes em todos os aplicativos da web e o roubo de dados ocorre quando esses dados são protegidos de forma inadequada. Portanto, para proteção de dados apropriada, o ASP.NET Core usa APIs criptográficas, além do algoritmo de criptografia para proteger os dados e evitar qualquer perda de dados. Os dados que não devem ser acessíveis a todos em um ambiente compartilhado podem ser protegidos usando o ASP.NET Data Protection Provider.
Neste blog, abordaremos como o Provedor de Proteção de Dados ASP.NET funciona e a função do NCache como um provedor de armazenamento de chaves.
ASP.NET Core Provedor de proteção de dados
Proteção de dados é um recurso do ASP.NET Core que permite que você proteja seus dados usando vários métodos de criptografia. AES-256-CBC e HMACSHA256 são os algoritmos padrão de proteção de carga, usados respectivamente para confidencialidade e autenticidade. As duas subchaves essenciais para esses métodos são derivadas de uma chave mestra de 512 bits que é modificada a cada 90 dias por carga útil.
1 2 3 |
services.AddDataProtection() // use a 14-day lifetime instead of a 90-day lifetime .SetDefaultKeyLifetime(TimeSpan.FromDays(14)); |
A chave gerada é armazenada/persistente usando provedores de armazenamento de chaves.
Provedores de armazenamento de chaves
O sistema de proteção de dados emprega um mecanismo de descoberta padrão para determinar onde as chaves criptográficas devem persistir. O desenvolvedor pode substituir o mecanismo de descoberta padrão e especificar manualmente o local.
1. Provedor de armazenamento de chaves padrão
Por padrão, as chaves persistem em uma pasta temporária especificada no Windows em ASP.NET Core, mas armazenar as chaves no local padrão tem uma desvantagem – as chaves não são acessíveis por várias instâncias de aplicativos da web. Portanto, para tornar as chaves disponíveis em vários servidores e acessíveis por todas as instâncias de aplicativos da Web, o usuário deve especificar manualmente um local para persistência de chave.
2. NCache como provedor de armazenamento de chaves
Para tornar as chaves disponíveis em vários servidores, o ASP.NET Core permite que você configure seu provedor de armazenamento de chaves. Aqui podemos usar NCache como provedor de armazenamento de chaves, as chaves persistem em um cache e, como NCache é um cache compartilhado em todo o cluster, isso torna as chaves disponíveis para todas as instâncias de aplicativos da web. Usando o método, PersistKeysToNCache
.
- PersistKeysToNCache
PersistKeysToNCache
é o ponto de entrada onde o usuário pode especificar o nome do cache e a marca do cache onde as chaves persistirão durante a configuração NCache como um provedor de armazenamento de chaves.
Configurando NCache como provedor de armazenamento de chaves
NCache funciona como um provedor de armazenamento de chaves para armazenar as chaves para serviços de proteção de dados, e sua configuração é simples e fácil. Para configurar NCache ASP.NET Core Provedor de proteção de dados, siga as etapas abaixo.
- Configurar serviço de proteção de dados
ASP.NET Core fornece middleware para proteção de dados. Este middleware deve ser adicionado à coleção de serviços usando o AddDataProtection()
método. Fornecer DirectoryInfo
apontando para o repositório onde as chaves devem ser armazenadas.
- Abra o inicialização.cs arquivo do seu projeto.
- No
ConfigureServices()
método, adicione o seguinte serviço:
1 2 3 4 |
public void ConfigureServices(IServiceCollection services) { services.AddDataProtection(); } |
Etapa 2: instalar o pacote NuGet
O primeiro passo é instalar o pacote NuGet que permite compartilhar ASP.NET Core Chaves de proteção de dados em NCache. Para instalar o pacote NuGet, primeiro abra Visual Studio e vai para Ferramentas -> Gerenciador de pacotes NuGet -> Console do gerenciador de pacotes e, em seguida, procure o pacote NuGet AspNetCore.DataProtection.NCache
.
- configurar NCache como provedor de armazenamento de chaves para o serviço de proteção de dados
Depois de instalar o pacote NuGet, primeiro você deve configurar NCache como provedor de armazenamento de chaves para armazenar chaves para serviços de proteção de dados.
1 2 3 4 5 6 |
public void ConfigureServices(IServiceCollection services) { string cacheName = "demoCache"; string cacheTag = "encryptions_keys_tag"; services.AddDataProtection().PersistKeysToNCache(cacheName, cacheTag); } |
Para usar ainda mais NCache como provedor de armazenamento de chaves em ASP.NET Core provedor de proteção de dados, implemente o exemplo de aplicativo abaixo:
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}"); } } } |
Conclusão
ASP.NET Core garante que os dados adicionados sejam seguros usando APIs criptográficas, além de algoritmos de criptografia, que são igualmente importantes. Essencialmente, NCache atua como um provedor de armazenamento de chaves para armazenar chaves e, em seguida, torna-as acessíveis por várias instâncias de aplicativos da web. Portanto, baixe agora uma avaliação de 60 dias totalmente funcional e use-a você mesmo.
Ótimas informações. Obrigado por compartilhar