Não exibir caminho e senha na minha classe de conexão com DB

Boa tarde, procurei aqui algo sobre como posso fazer para minha senha e caminho do banco de dados não ficar visível na classe de conexão e não encontrei algo. Alguém tem uma forma de resolver isso?
Gostaria apenas de proteger esta senha para que o servidor da database não fique exposto o resto do código tanto faz. de já obrigado.

Você pode criar um arquivo de propriedades externo e deixar essa informação lá, criptografada, e descriptografar dentro da sua classe de conexão.

Dessa forma o valor não fica totalmente exposto, mas ainda assim não é 100% seguro.

Pois é Jonathan tava pensando nisso porque tipo se o cara usar engenharia reversa em um app de contas ele não consegue acessar o banco de dados dos usuários e assim ver todas as senhas e informações pessoais? fiquei encucado em como eles escondem isso e queria usar em um meu pq desanimo em não saber como dar segurança aos usuários e nunca vi ninguém falar a respeito dessa segurança. Só vi falar em relação ao código.

Com a engenharia reversa ele consegue acesso total na aplicação, a forma mais segura de redistribuir a sua aplicação seria em .exe, pois os formatos .jar e .war permitem a engenharia reversa facilmente.

Nesse exemplo que você deu o ideal seria armazenar essas informações criptografadas na base de dados, pra não ficar explicitamente exposto.

Apesar da senha do DB tbm estar acessivel na classe do app né?
Esse negocio é preocupante :frowning:

Sim, tomamos as precauções possíveis para garantir a segurança, mas acho praticamente impossível ter algo 100% seguro, toda via a gente sempre tenta garantir o máximo possível.

Obrigado pelos esclarecimentos Jonathan, você teria algum exemplo de .propriets com criptografia? Como poderia fazer isso ?

Eu tenho, mas em projetos privados, se você não tiver muita urgência disso eu disponibilizo um exemplo no meu github até semana que vem.
Mas não tem muito segredo não, é basicamente a leitura de um arquivo.properties e encrypt/decrypt de dados.

Tranquilo Jonathan eu aguardo enquanto isso vou pesquisando pra ver se consigo entender bem como funciona. Muito obrigado .

Segue um exemplo de criação e leitura de um arquivo de configurações de conexão com banco de dados utilizando criptografia de dados.

1 curtida

Bom dia Muito obrigado Jonathan vou dar uma estudada nele aqui pra ver se consigo aprender. valeu mesmo amigo.

Caso o usuário utilize o WinRar ou o JavaDecompiler para abrir o jar ele terá acesso à chave KEY, não? A chave key não fica oculta. Nesse caso bastaria utilizar a KEY em um método decrypt que ele iria recuperar a senha do banco do mesmo jeito, podendo, nesse caso, ter acesso total pelo pgadmin, por exemplo.
Pelo que percebi, dificultou um pouquinho apenas, mas quem entende de criptografia por chaves recuperaria a senha muito fácil…
Por acaso esse arquivo properties já não é acessado facilmente pelo JavaDecompiler não?

Exatamente, um pouco mais acima sugeri a distribuição da aplicação em .exe.

1 curtida

Pensei nisso tbm, deixar ele como .exe ai ficaria mais dificil pro camarada abrir.

A ideia principal do arquivo de propriedades de conexão é facilitar a configuração para diversos BD sem precisar alterar o código base de uma classe de conexão com o BD, dessa forma basta gerarmos um arquivo com as configurações desejadas sempre que quisermos direcionar nossa aplicação para uma conexão diferente.

1 curtida