Descobrindo senha de banco de dados
Você já passou por aquela situação de desconfiança, onde ao informar a senha de acesso ao banco de dados e pensou “poxa, tenho de informar a senha em texto limpo ?”, desejando que a senha estivesse cifrada.
Isso por padrão ocorre em alguns servidores de aplicativos, onde a senha de acesso ao banco de dados é informada em texto limpo, em outros servidores de aplicativos a senha ecoa em asteriscos, deixando o usuário confortável que a senha está segura. Bem, não acredite nisso, a senha não está segura.
O que quero mostrar é que a senha pode ser extraida de outras maneiras, como inspecionar os pacotes de mensagens IP. O que pode garantir a senha é uma combinação de práticas e configurações para deixar o ambiente mais seguro.
-Doracle.jdbc.Trace=true -Doracle.jdbc.LogFile=/var/tmp/oracle-trace/trace14. Reiniciar o servidor de aplicativos Basta acompanhar o log de trace do oracle ou do servidor de aplicativos, que a senha será impressa desta maneira
INFO: OracleXADataSource.getXAConnection() 03/10/2007 15:33:16 oracle.jdbc.xa.client.OracleXADataSource getXAConnection INFO: OracleXADataSource.getXAConnection(user = claudio, passwd = admin123) 03/10/2007 15:33:16 oracle.jdbc.driver.PhysicalConnection setAutoCommitBonito não é ? Para o Oracle é usado uma [funcionalidade documentada](http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm#32_00), que é o trace das chamadas. Mas infelizmente, a senha é impressa junto. E vejam que nem com SSL, a senha é protegida. E é necessário ter privilégios de administração do servidor de aplicativos. Quando que isso pode ser útil ? Já trabalhei em lugares onde a senha do banco de dados, era digitada no console do appserver, pelo próprio pessoal da equipe de DBA, e em algumas situações era necessário realizar alguma pesquisa no BD, então essa dica vale a pena. Em banco de dados de código livre fica mais fácil, basta usar o código fonte do driver JDBC, modificar o código fonte para imprimir a senha e pronto. Em banco de dados que não são de código livre, basta criar sua classe que estende [DataSource](http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/DataSource.html) e sobrecarregar o método getConnection e fazer um proxy para o DataSource do driver JDBC. Então, percebam que os asteriscos no textfield não significam segurança para a senha do banco de dados. Tenho essa dica há uns 3 anos e percebi que não escrevi sobre ela ainda. Se essa dica foi útil para você, deixe um comentário, informando como ela lhe ajudou ! </p>
Deixe um comentário