Dados de acesso embarcados no EXE

42 views
Skip to first unread message

Gustavo Almeida

unread,
Jul 21, 2022, 10:42:57 AM7/21/22
to dotn...@googlegroups.com
Pessoal,

Estamos desenvolvendo um sistema em VB.NET e ele vai ser distribuído
como "software de prateleira" e fará um acesso a um banco de dados MySQL
em nuvem.

A dúvida é: como podemos fazer para o LOGIN e SENHA de acesso ao banco
não ficar visível no EXE que será distribuído, uma vez que o .NET
permite facilmente uma "descompilação" do EXE?

Ou estou errado quando a essa possibilidade da descompilação???

Alguém sugere algo?

Obrigado.

Erlon Santos

unread,
Jul 21, 2022, 1:04:30 PM7/21/22
to dotn...@googlegroups.com
Boa tarde,
Uma sugestão seria usar uma api rest , wcf , ou grpc para comunicar com a base ao invés de fazer acesso direto , desta forma a autenticação fica segura
alem de toda comunicação com  a base.

--
==============================
Comunidade de desenvolvedores Dot Net no Brasil

Facebook: www.facebook.com/grupodotnetbr

WebSite: www.dotnetbr.com

E-mail do Grupo: dotn...@googlegroups.com
==============================
---
You received this message because you are subscribed to the Google Groups "DotNet Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dotnet_br+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dotnet_br/8c07c312-e56b-92a0-0d50-ead5d2f495d5%40gmasoftwares.com.br.

Gabriel - GAG

unread,
Jul 21, 2022, 1:14:23 PM7/21/22
to DotNet Brasil
Oi Gustavo, 

Entendo que será um sistema Desktop e não Web, correto?

A sugestão é fazer o hash da senha. Tem um pouco a respeito na documentação do .Net: 

Outra sugestão (isso é mais para web, mas acredito que os conceitos se apliquem), é dar uma olhada na área de autenticação e segurança do Asp.Net:

Por fim, também há a possiblidade de usar o login/senha do BD como usuários do seu sistema. Assim, vc limita o acesso ao sistema e à base.

Abçs

Gustavo Almeida

unread,
Jul 21, 2022, 1:30:39 PM7/21/22
to dotn...@googlegroups.com
Obrigado Gabriel,

É desktop, sim! Windows Forms.

É um software "simples", mas cujo banco de dados será em MySQL hospedado online.

E meu medo é alguém conseguir acesso ao usuário e senha do MySQL através da informação embutida no código fonte do EXE.

Vou dar uma lida nos links que você indicou pra ver se encaixa aqui.

Valeu!
--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
 
Facebook: www.facebook.com/grupodotnetbr
 
WebSite: www.dotnetbr.com
 
E-mail do Grupo: dotn...@googlegroups.com
==============================
---
You received this message because you are subscribed to the Google Groups "DotNet Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dotnet_br+...@googlegroups.com.

Luiz Estevam

unread,
Jul 21, 2022, 2:41:46 PM7/21/22
to dotn...@googlegroups.com
Boa tarde,

A ideia do Erlon é uma boa sugestão mas acredito que deste modo você não leva só a conexão de banco para a API e acaba levando também muitas regras de negócios, deixando a parte visual somente com o front e toda necessidade será requisitada a API.

Pensando em acesso direto ao banco eu primeiramente na ativação do produto solicitaria a criação de um usuário e senha de acordo com informações passadas pelo usuário então criaria este acesso único para está ativação. Então geraria um arquivo criptografado que só seu binário saiba ler com as credenciais de acesso deste modo você tem controle de usuários que estão acessando a aplicação, dificulta o compartilhamento de usuário e senha de acesso caso alguém descubra e você pode filtrar por este usuário que não vai ter acesso a informações de outros clientes.

Luiz Estevam 


angelo

unread,
Jul 22, 2022, 4:22:13 PM7/22/22
to dotn...@googlegroups.com
Tem uns 10... ou 15 anos atrás

No meu trabalho, fizemos a distribuição de um software de prateleira, desktop, que todo acesso a base de dados e regra de negócios rodavam em webservices e a base, sql server na época na mesmo ambiente, mesma infra.  
no tempo ainda era net 2.0.     A ideia era semelhante ao que as apis json permitem fazer hoje (em 2005 ainda nao tinha isso, ou devia estar embrionário) 

Para o colega adotar as sugestões, terá que fazer algumas modificações, porquê provavelmente toda lógica no sistema dele olhando o hoje deve estar no próprio executável que vai ser distribuído..  trabalho para uma futura versão 2 quem sabe

E o lado ruim de rodar o executável no desktop e acessar a base na nuvem é ter que lidar com porta da base de dados aberta na internet. 3306 a do mysql no caso

Não sei como funciona no Mysql a nível de segurança mas se a conexão entre o cliente e o servidor não for criptografada, é possível "pescar"  na rede o que vai trafegar entre a máquina e a base de dados, ao conectar e rodar um comando SQL.
mais um motivo, pra pensar em no futuro com calma, adotar apis ( e elas podem rodar com ssl, criptografado)


anderson lins

unread,
Jul 22, 2022, 5:44:47 PM7/22/22
to dotn...@googlegroups.com
Boa noite,

Fiquei com algumas dúvidas;


Sua aplicação é multitenant? (Todos os clientes vão ter acesso ao mesmo banco?)
Vai existir uma aplicação por cliente? Mesmo EXE para todos?
Como você vai tratar atualização do banco de dados? e da aplicação? (Pensando que pode ter impactos e manter a compatibilidade pode ser um problema)
Qual foi a recomendação do seu time de segurança? (Lembrando que expor o banco de dados assim direto na web é uma falha de segurança grave)



Enviado do meu iPhone

Em 22 de jul. de 2022, à(s) 17:22, angelo <angelo...@gmail.com> escreveu:



Bruno Gross

unread,
Jul 24, 2022, 1:03:55 AM7/24/22
to dotn...@googlegroups.com

Encapsule numa API e reveja a arquitetura da solução pra usar isso (ae retorna por essa api um pwd encriptado e só sua api e o database vão conhecer a chave). 

Deixar isso no app, mesmo usando um obfuscator da vida é tiro no pé 

--
==============================
Comunidade de desenvolvedores Dot Net no Brasil

Facebook: www.facebook.com/grupodotnetbr

WebSite: www.dotnetbr.com

E-mail do Grupo: dotn...@googlegroups.com
==============================
---
You received this message because you are subscribed to the Google Groups "DotNet Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dotnet_br+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dotnet_br/8c07c312-e56b-92a0-0d50-ead5d2f495d5%40gmasoftwares.com.br.
--
Sent from my iPhone
Reply all
Reply to author
Forward
0 new messages