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.