Duvida sobre segurança

6 respostas
D

Boa noite!

Pessoal sou novo em desenvolvimento web e pesquisei no Google e não achei uma resposta para minha dúvida. Estou desenvolvendo um aplicação web para um cliente e nas classes Java vão a senha do banco e de conta de e-mail necessária para o envio dos mesmos para os clientes. Pois bem até onde pesquisei as classes Java compiladas podem ser descompiladas e na situação hipotética que um chacker ou outra pessoa entre no servidor e peque os fontes ele terá acesso a essas senhas. Gostaria de saber se tem como colocar no fonte a senha criptografada e se sim como garantir a segurança pois eu terei que colocar também a minha chave para criptografia na classe, por exemplo no C# ASP.Net os fontes são compilados de forma mais segura. Em fim parece um dúvida meio sem noção mas o que fazer nesse caso?

Att.

6 Respostas

D

DELPHI++:
Boa noite!

Pessoal sou novo em desenvolvimento web e pesquisei no Google e não achei uma resposta para minha dúvida. Estou desenvolvendo um aplicação web para um cliente e nas classes Java vão a senha do banco e de conta de e-mail necessária para o envio dos mesmos para os clientes. Pois bem até onde pesquisei as classes Java compiladas podem ser descompiladas e na situação hipotética que um chacker ou outra pessoa entre no servidor e peque os fontes ele terá acesso a essas senhas. Gostaria de saber se tem como colocar no fonte a senha criptografada e se sim como garantir a segurança pois eu terei que colocar também a minha chave para criptografia na classe, por exemplo no C# ASP.Net os fontes são compilados de forma mais segura. Em fim parece um dúvida meio sem noção mas o que fazer nesse caso?

Att.

Estou usando JSF 2.0

E

Não tem nenhuma segurança a mais implícita no C# ou ASP.NET. Na verdade, se você escrever um programa em C++ (que sabidamente é difícil de descompilar) e puser a senha “em claro” dentro do executável, ele será tão inseguro quanto o Java.

O correto é tomar conta do seu ambiente de produção, e deixar certas coisas separadas (normalmente o web server deve ser isolado do web container).

D

entanglement:
Não tem nenhuma segurança a mais implícita no C# ou ASP.NET. Na verdade, se você escrever um programa em C++ (que sabidamente é difícil de descompilar) e puser a senha “em claro” dentro do executável, ele será tão inseguro quanto o Java.

O correto é tomar conta do seu ambiente de produção, e deixar certas coisas separadas (normalmente o web server deve ser isolado do web container).

Não quis comparar o ASP.net com JSF, pois os dois são ótimos. Só coloquei ASp.net pois também era uma dúvida que eu tinha. Não entendi bem esse deixar as coisas separadas.

E

É o seguinte.
Digamos que seu sistema esteja rodando em alguma variante do Unix (como o Linux).
Normalmente programas que rodam como root são mais “destrutivos” que programas que não rodam como root, devido às permissões que cada um tem.
Casualmente, para um programa abrir a porta 80 ou 443, normalmente ele deve rodar como root (o que não é o caso da porta 8080).
(Algumas versões do Unix, como o Solaris ou então a extensão SELinux do Linux, permitem modificar esse requisito, permitindo que programas não-root possam abrir a porta 80 ou 443, através de permissões especiais, mas não conte com isso em todas as versões do Unix).
Como normalmente sites têm de rodar na porta 80 ou 443 (imagine você pedir ao seu cliente digitar “:8080” na URL do seu site, que porre, não?) você usualmente tem um programa (devidamente auditado) que atende na porta 80 e serve todas as páginas, imagens e scripts CSS estáticos, como o Apache HTTP Server (ou então suas versões IBM HTTP Server ou Oracle HTTP Server), e que redireciona as requisições dinâmicas para o servidor de aplicações (Tomcat ou JBoss ou WebSphere ou WebLogic ou Glassfish etc.), que pode até estar instalado em uma outra máquina, separada da Internet, se for o caso. Então, se alguém invadir o seu site, irá apenas invadir a máquina com Apache HTTP Server, não a máquina onde está o Tomcat ou WebSphere ou WebLogic ou GlassFish ou JBoss e que contém seu código e suas senhas de bancos de dados.
Se você realmente tem de usar Windows, pode deixar o web server no Linux e o servidor de aplicações no Windows, que você conhece melhor.

FernandoFranzini

Eu não vou entrar em detalhes aqui, mas segue um esclarecimento…
- Segurança esta divida em 4 níveis - Física, Rede, Servidores e Aplicação.
Uma brecha em qualquer um desses níveis é uma falha de segurança!
No seu caso, impedir o atacante de acessar o servidor web no qual o byte code java esta sendo executado é uma medida de segurança DE NIVEL FISICA E SERVIDOR…e não de APLICAÇÃO.
Diante disso, oq vc precisa fazer na verdade é ter uma politica de acesso NO ESTAÇÃO DO SERVIDOR e não tentar remediar tal brecha usado algum artificio em outro NÍVEL de aplicabilidade.

sergiotaborda

DELPHI++:
Boa noite!

Pessoal sou novo em desenvolvimento web e pesquisei no Google e não achei uma resposta para minha dúvida. Estou desenvolvendo um aplicação web para um cliente e nas classes Java vão a senha do banco e de conta de e-mail necessária para o envio dos mesmos para os clientes. Pois bem até onde pesquisei as classes Java compiladas podem ser descompiladas e na situação hipotética que um chacker ou outra pessoa entre no servidor e peque os fontes ele terá acesso a essas senhas. Gostaria de saber se tem como colocar no fonte a senha criptografada e se sim como garantir a segurança pois eu terei que colocar também a minha chave para criptografia na classe, por exemplo no C# ASP.Net os fontes são compilados de forma mais segura. Em fim parece um dúvida meio sem noção mas o que fazer nesse caso?

Vc não precisa manter as credenciais (username e password) no código , vc pode deixar em arquivo. Em java é normalmente usado um formato conhecido como .properties que é semelhante aos antigos ini. A classe Properties dá suporte direto a ler estes arquivos.

normalmente uma violação de acesso a este arquivo é responsabilidade de quem mantém o servidor e o acesso e não do desenvolvedor. contudo é possivel vc prover um mecanismo de encriptação.

Vc encripta a senha e coloca ela encriptada no arquivo. O algoritmo de desencriptação pode ficar no código.

Se vc quiser vc pode deixar a chave em um arquivo separado e encriptar a chave com um outro algoritmo.

No frigir dos ovos é um pouco irrelevante tanta encriptção se o seu servidor não for seguro. Portanto o mais simples e mais eficaz é proteger o sevidor de acessos indevidos.

É preciso também ter em mente que a senha de acesso ao banco é para o servidor e não para cada usuário.

Criado 28 de agosto de 2012
Ultima resposta 29 de ago. de 2012
Respostas 6
Participantes 4