Olá pessoal, ultimamente tenho estudado um pouco de como utilizar JPA+hibernate, e para brincar um pouco fiz um programinha simples de cadastro de clientes. Quando terminei notei que o arquivo .jar que é gerado contém dentro da pasta META-INF o arquivo persistence.xml no qual esta contida a senha do meu banco de dados. Ou seja, caso eu fosse distribuir meu programinha, qualquer um poderia pegar o jar e ver minha senha :shock: !
Então minha dúvida é: como que eu faço para que não fique exposta minha senha do banco? tem como criptografar este arquivo?
Não posso, se eu apagar esta informação não irá funcionar o meu sistema, pois ele busca neste arquivo o endereço do banco de dados assim como o usuario e a senha para acesso.
Mas mesmo assim obrigado…
Cara, até onde eu sei sobre meta-inf ela é gerada automaticamente e o manifest era para dependência de jar. Foi vc qm colocou a senha ali?
Realmente essa senha terá que ficar em algum lugar. Uma solução seria criar um arquivo onde vc armazenaria sua senha e quando vc enviasse seu programa para alguém, esse arquivo fosse em branco e a pessoa colocasse a senha/usuário do DB dela. Com isso, sua senha não seria exposta.
Realmente o meta-inf é gerado automaticamente, mas minha senha fica dentro do arquivo persistence.xml que é o arquivo de configuração do hibernate e não no arquivo mainfest.
Isso não resolve pro meu caso, é porque aqui onde eu faço meu estágio tem vários pcs, e eu quero colocar o meu programa em todos eles, e colocar o meu BD no servidor, so que ai que vem o problema, em todos os pcs terá o meu jar, e dentro dele tem o arquivo persistence.xml que terá o endereço do BD, usuario e senha, ai caso alguem queira ele pode muito bem ver meu usuario e senha, e então acessar o meu BD e então só Deus sabe o que ele pode querer fazer… :shock:
Estou utilizando o hibernate.
E quanto a eu criptografar a senha… como faço isso?
eu até tenho um método aqui que criptografa uma senha, mas ai eu coloco a senha criptografada no arquivo persistence.xml? mas e quando o hibernate for ler o arquivo e ver essa senha criptografada? ele vai descriptografar e mandar para o banco para realizar o acesso?
Normalmente, pra contornar esse problema, usamos um datasource (que é gerenciado pelo contêiner, ou seja, o desenvolvedor não tem acesso) e fazemos o lookup dele por JNDI. Fica assim:
hum… só tem um problema… não faço idéia de como fazer isso. rsrsrs
mas valeu pela dica, vou pesquisar sobre esse datasource, qualquer coisa volto aqui.
Olá asaudate, dei uma pesquisada na web e achei algumas coisas falando sobre JNDI, porém todas são voltadas para aplicações web, e minha aplicação é para desktop. Como que irei trabalhar com um contêiner(Tomcat) utilizando java para Desktop ?
Olá Garcia, será que tem como vc me mostrar um exemplo? não to conseguindo entender como que irei utilizar este jasypt.
Não estou sabendo como configurar meu arquivo persistence.xml.