se, como cerca de 10 milhões de outras pessoas, você é um desenvolvedor Java, você provavelmente quer saber como manter o código Java seguro. Os desenvolvedores sempre precisarão ficar em cima de dicas e melhores práticas para lidar com questões de segurança Java.
Java é a linguagem de programação mais popular hoje, com uma boa razão. O código Java é multi-plataforma. Java programming is widely taught in university computer science departments. Tantos programadores ansiosos entram nos seus primeiros empregos prontos para codificar em Java. E o projeto orientado a objetos de Java torna simples reutilizar código.
no entanto, apesar da popularidade de Java, seria difícil encontrar alguém que argumentasse que Java é a linguagem de programação mais segura lá fora. Questões de segurança Java são reais. Java foi projetado para ser tão seguro quanto outras linguagens de programação populares, e oferece recursos como SecurityManager para ajudar a melhorar a segurança em certos contextos. No entanto, aplicações Java estão sujeitas a uma série de potenciais vulnerabilidades de segurança, incluindo, mas não limitado a, vários ataques de injeção.
é crucial para os desenvolvedores e administradores Java para manter vulnerabilidades de segurança Java comuns em mente enquanto eles escrevem e implementam aplicações Java. Segurança-programação em primeiro lugar é especialmente importante no caso do Java, porque a natureza multi-plataforma do código Java significa que frameworks de segurança de nível OS nem sempre podem ser confiáveis para manter as aplicações seguras.
também não deve esperar que os utilizadores finais sejam capazes de gerir as ameaças de segurança Java de forma eficaz. Claro, você pode culpar seus usuários por executarem código Java não confiável ou desativarem atualizações automáticas para sua execução Java, mas, em última análise, o fardo de escrever aplicativos Java seguros e isolar o código dentro de um ambiente Java que pode não ser Seguro está com os desenvolvedores.
Common Java security issues
Java programmers should keep the following security challenges in mind when they are designing and writing Java applications.
SQL injeções
SQL injeções ocorrem quando um atacante insere o código malicioso de consulta SQL em uma forma. Se o aplicativo não conseguir detectar o código malicioso e passa-o para uma base de dados, a base de dados pode ser modificada de forma prejudicial, ou dados sensíveis podem ser expostos a partes não autorizadas.
a proliferação de ferramentas automatizadas para injeções de SQL faz com que a injeção de SQL ataque um desafio de segurança generalizado para aplicações Java e, já agora, praticamente qualquer outro tipo de aplicação que possa se conectar a um banco de dados hoje.
a solução para ataques de injeção SQL em Java é bastante simples: Certifique-se de que o seu aplicativo valida corretamente a entrada e impede que o código malicioso seja adicionado a dados já aceitos em um formulário. Como regra geral e sempre que possível, evitar consultas dinâmicas para mitigar o risco de injeções de SQL em aplicações Java. A classe de PreparedStatement do Java também pode ser útil para prevenir ataques SQL.
injeções LDAP Java
injeção ataques que exploram declarações Lightweight Directory Access Protocol (LDAP) representam outro ataque comum em aplicações Java. Aqui, novamente, a validação de entrada é a chave para prevenir ataques.
em particular, os desenvolvedores de Java podem impedir a maioria dos tipos de ataques de injeção LDAP se escaparem de caracteres especiais LDAP.
outros tipos de ataques de injeção Java
já cobrimos injeções SQL e injeções LDAP, mas ataques de injeção em aplicações Java não terminam lá. Injeções de cordas de conexão, injeções de scripting cross-site (XSS) e outros tipos de ataques são todos possíveis.
estes tipos de ataques não se aplicam a todas as aplicações Java — XSS é realmente apenas um risco grave com aplicações web, por exemplo — mas eles são outro lembrete de porque a validação de entrada é tão importante.
as vulnerabilidades do ‘SecurityManager’
O ‘SecurityManager’ foi desenhado para que possa correr de forma segura o ‘bytecode’ em aplicações Java. Caixas de areia SecurityManager o bytecode, a fim de evitar ataques.
isto faz do SecurityManager um grande recurso para a segurança Java — desde que, claro, funcione correctamente. O principal risco do SecurityManager é a história de vulnerabilidades de segurança que surgiu dentro do próprio SecurityManager. Estas vulnerabilidades às vezes permitem código isolado para sair da caixa de areia e executar ataques.
em certa medida, gerenciar questões de segurança do SecurityManager e Java é um problema não para desenvolvedores, mas para administradores de sistema, que devem manter a programação do Java atualizada. No entanto, os desenvolvedores podem fazer a sua parte e evitar caixas de areia quando possível. Por outras palavras, não confies cegamente no Gestor da SecurityManager. Se você tiver que usá-lo em uma aplicação, use-o. Mas se você pode alcançar a funcionalidade que você precisa sem ele, mitigar riscos de segurança Java, e evitá-lo.
Frascos maliciosos
Quando uma aplicação Java carrega frascos no tempo de execução, às vezes, um hacker pode enganar a aplicação para ligar Frascos maliciosos. Este é um velho problema de segurança, e Java introduziu uma série de verificações ao longo dos anos para ajudar a evitá-lo.
algumas dessas características de mitigação de ataque agem por sua própria conta, mas os desenvolvedores podem tirar vantagem deles assinando Frascos. Dessa forma, as assinaturas são verificadas em tempo de execução e evitar intrusões. Os programadores também podem mitigar a ameaça representada por frascos maliciosos, restringindo os privilégios de acesso de classes específicas para que, se o código malicioso for carregado, as Políticas de Segurança natural irão limitar os danos que o código malicioso pode fazer.