criptografia

Olá pessoal, meu nome é Mauricio Junior e hoje eu vou falar de string de conexão criptografada. É muito importante para a sua aplicação ter uma conexão criptografada porque com ela a pessoa pode acessar o seu banco de dados / database para pegar todos os dados.

Para quem ainda não sabe, o banco de dados / database é onde ficam as informações de cada sistema e o sistema apenas coloca de forma bonita para que o usuário entenda, usando uma interface que chamamos de UI (User Interface).

O sistema pode ser também responsável por fazer alguns cálculos e a partir disso gravar no banco de dados. Pode também gerar gráficos e relatórios com as informações do database. Tudo isso pode ser feito mas é necessário ter uma conexão entre o software e a fonte de dados.

A fonte de dados pode ser um database mas também pode ser um arquivo qualquer. O mais indicado é ter o banco de dados conectado.

Código

Para colocar isso em código, criei um pacote responsável por utilizar a criptografia de dados utilizando chave pública e chave privada. Eu disponibilizei esse pacote para ser utilizado gratuitamente pelos desenvolvedores e está disponível no NuGet.

O nome do pacote é CriptConnectionString-NET-6 criado em C# da Microsot com Visual Studio. É necessário fazer download e incluir em seu projeto. Dentro do arquivo de configuração utilizo uma criptografia boa, veja o código 1.

{
  "ConnectionStrings": {
    "DefaultConnection": "52b+tYhuBkPc5PL1MCIcUkFZaXKVfsJNFq9AwfY14eokinkE...",	    
}

Código 1 - Connection String

Dentro da classe Program.cs eu utilizo o pacote com as minhas chaves. Veja o código 2.

//database
builder.Services.AddDbContext<SqlContext>(option =>
{
    var conn = new CriptConnectionString.Cripto()
        .DecryptAES(builder.Configuration.GetConnectionString("DefaultConnection"),
            "<public key>",
            "<private key>"); 
    
    option.UseSqlServer(conn);
});

Código 2 - Utilizando o DecryptAES com as chaves

O código 2 é responsável por pegar o dados criptografado e utilizando as chaves o código consegue pegar os dados corretos para conexão com o banco de dados.

Se eu utilizar mais uma opção dentro do AddDbContext o sistema pode mostrar todo tipo de interação com o banco de dados dentro do log. Código 3.

//database
builder.Services.AddDbContext<SqlContext>(option =>
{
    var conn = new CriptConnectionString.Cripto()
        .DecryptAES(builder.Configuration.GetConnectionString("DefaultConnection"),
            "029SOK-29",
            "GIPU-289X-W94"); 
    
    option.UseSqlServer(conn);

    option.EnableSensitiveDataLogging();
});

Código 3 - EnableSensitiveDataLogging()

No código 3 o option.EnableSensitiveDataLogging() mostra todo select, insert, delete e update.

Você pode utilizar o pacote CriptConnectionString para criptografar os dados antes de colocar dentro do arquivo de configuração.

Aqui tem outro artigo que mostra como fazer isso passo a passo, veja o link https://www.nuget.org/packages/CriptConnectionString-NET-6#supportedframeworks-body-tab.

Espero ter ajudado e qualquer dúvida pode entrar em contato.

Mauricio Junior.