Esse artigo faz parte da revista Java Magazine edição 04. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler essa revista em PDF.imagem_pdf.jpg

Segurança em aplicações web

Conceitos e implementações no J2EE

Um requisito básico da maioria das aplicações web é a segurança. Veja conceitos e técnicas usados na configuração de segurança em containers web

Uma das maiores vantagens da plataforma J2EE é ajudar o desenvolvedor a focar na implementação da lógica de negócios de suas aplicações, deixando as tarefas de infra-estrutura por conta dos containers J2EE. Uma dessas tarefas é a segurança.

A especificação de servlets define como o container web deve fornecer serviços de segurança para aplicações web hospedadas no container, além de uma API comum para acesso a esses serviços.

Conceitos de segurança e os 4 As

As aplicações web são formadas por um conjunto de recursos, como páginas JSP, servlets, páginas HTML, imagens, applets etc. Em algumas aplicações é necessário que o acesso a esses recursos seja controlado, restringindo-o apenas aos usuários previamente autenticados.

Vamos começar discutindo os principais conceitos de segurança. Em seguida veremos como eles se aplicam a um container web. Os principais componentes de um sistema segurança são conhecidos como os "quatro As": Autenticação, Autorização, Auditoria e Administração.

Autenticação

Representa a forma como o usuário prova que é realmente quem está dizendo que é. Na maioria das aplicações, a autenticação é feita utilizando o nome do usuário e sua senha. Esta é a forma mais simples de autenticação e por isso a mais utilizada. Mas a autenticação pode ser muito mais sofisticada, envolvendo, por exemplo, a análise de um certificado digital ou a verificação de padrões biológicos, como características da íris do olho ou o reconhecimento de faces (autenticação biométrica).

Autorização

A autorização é utilizada para verificar se o usuário previamente autenticado possui permissão para acessar um determinado recurso, ou para executar alguma função da aplicação. Em termos simples, a autorização determina “quem pode fazer o que”.

Auditoria

Os sistemas de segurança devem fornecer relatórios que permitam uma auditoria nos sistemas, e não apenas logs em arquivos texto. Um exemplo comum é o registro das operações realizadas por cada usuário. São armazenados qual foi o usuário, a data e a hora, e que operação foi executada. Entretanto não é evidente, a partir da simples leitura deste logs, quais acessos foram indevidos ou quais partiram de usuários regulares. Um sistema de auditoria permitiria correlacionar padrões nos logs e identificar reais tentativas de violar a aplicação.

Administração

A administração de usuários é uma tarefa complexa e exige uma interface de fácil operação. É uma parte fundamental de sistemas de segurança, porém muitas vezes subestimada, talvez por não ser um requisito tecnológico e sim operacional. Adicionar novos usuários e gerenciar roles (veja o quadro "O que são roles") são algumas das tarefas comuns da administração. Estas tarefas se tornam mais complexas à medida que aumenta o número de usuários, aplicações e permissões.

Outros importantes conceitos de sistemas de segurança são:

Confidencialidade, integridade e não-repudiação

Os dados devem trafegar de forma segura entre o cliente e o servidor, sem o risco de serem interceptados ou copiados enquanto em trânsito pela rede, e com a garantia de que estão sendo enviados para o seu destino real em vez de outro destino qualquer, indesejado.  O problema de confidencialidade é resolvido com criptografia. Nos servidores web, o SSL (Secure Sockets Layer) é a forma mais utilizada de criptografia, fornecendo a integridade necessária para garantir que os dados trafegados não sejam alterados durante o percurso, e utilizando certificados digitais para garantir a identidade das partes envolvidas.

Notificação

Apenas com os recursos de auditoria já é possível realizar consultas, mas um sistema de segurança deve fornecer notificações em tempo real sobre possíveis problemas. Deve ser capaz de informar, às pessoas responsáveis, da ocorrência de eventos como um ataque DoS (Denial of Service), ou da possibilidade de alguém estar tentando descobrir uma senha usando técnicas de força bruta. As notificações podem ser enviadas aos administradores por e-mail, ou através de mensagens SMS, apenas para citar as formas mais comuns. Outra funcionalidade da notificação é informar a ocorrência de algum problema com os serviços de autenticação e autorização, já que estes são vitais para o funcionamento do sistema. ...

Quer ler esse conteúdo completo? Tenha acesso completo