Olá, desenvolvi um programa feito em Java e ele estabelece conexão com o MySQL, mesmo com os códigos ofuscados, é possivel obter Host, Porta, Usuario e Senha, através do jMap /Visual VM
assim, deixando o programa e o banco de dados exposto… alguém sabe alguma solução?
É uma aplicação web ou desktop? É JDBC ou está usando algum framework/implementação de JPA?
Isso só ocorre se sua aplicação for cliente -> persistência.
A solução é mudar para a arquitetura cliente -> servidor -> persistência.
Ofuscar o código é placebo.
A premissa básica é que aplicações cliente são por natureza inseguras e a segurança é buscada no servidor em conjunto com outros mecanismos de proteção.
Concordo. Tem até desenvolvedores experientes que teimam em não concordar com isso.
Geralmente eu coloco estes dados em arquivos de texto criptografados fora do sistema, mas também fica vulnerável, pois precisa ser uma criptografia fraca que permite ser desfeita para o sistema poder ler estes parâmetros.
Para aplicações de pouca visibilidade tais procedimentos parecem seguros, por isso é um placebo.
Guardar senhas de aplicação com o cliente é um risco assumido.
Neste caso ele executou um man in the middle, logo não seria eficaz pois o atacante está fazendo apenas sniffing.
Mesmo que ele fizesse malabarismos, em último caso um atacante pode fazer engenharia reversa, alterar a interface e capturar o password e outras informacoes depois de descriptografado.
Ofuscar o código não altera a semântica computacional, se o atacante for um no cego, só aplicações de baixa visibilidade “se fazem” seguras.
Quando se utiliza software para a ofuscação do código ou de conversão de .jar para .exe não tem controle do que será realizado e pode prejudicar o funcionamento correto do seu software.