Desenvolvimento

26 ago, 2014

10 boas práticas para tornar seus aplicativos mais seguros – Parte 05

Publicidade

Esta é a quinta parte de uma série de artigos sobre as Top 10 práticas proativas da OWASP.

No artigo anterior, nós abrangemos o quanto é importante pensar sobre o controle de acesso e a autorização precoce no design, e erros comuns para se evitar na implementação de controles de acesso. Agora, falaremos sobre a autenticação, que é sobre provar a identidade de um usuário, e então gerenciar e proteger a identidade do usuário como eles usam o sistema.

Não tente construir isso tudo sozinho

Construir seu próprio esquema de autenticação e gerenciamento de sessão infalível não é fácil. Existem muitos lugares onde se pode cometer erros, e é por isso que “Autenticação de falha e gerenciamento de sessão” é o item 2 na lista dos Top 10 do OWASP de problemas sérios de segurança de aplicativos. Se o seu framework não cuida disso corretamente para você, então dê uma olhada em uma biblioteca como Apache Shiro ou ESAPI da OWASP, que fornecem funções para autenticação e gerenciamento de sessão segura.

Usuários e senhas

Um dos métodos de autenticação mais comuns é solicitar que o usuário digite uma ID e uma senha. Assim como outros fundamentos em segurança de aplicativos, esse é um conceito simples, mas ainda existem lugares onde você pode cometer erros dos quais os vilões podem e vão se aproveitar.

Primeiro, considere cuidadosamente as regras para IDs de usuário e senhas, incluindo o comprimento e a complexidade da senha.

Se você estiver usando um endereço de e-mail como o ID de usuário, tenha cuidado para manter isso seguro: criminosos podem estar interessados em conseguir endereços de e-mail para outros fins.

ESAPI do OWASP possui métodos para gerar senhas fortes e verificar a força das senhas que aplicam um conjunto de verificações que você pode usar para tornar as senhas seguras. As regras comumente seguidas para a complexidade das senhas estão provando ser menos úteis para proteger a identidade do usuário do que deixá-los tirar vantagem de um gerenciador de senhas ou inserir strings longas de senha. Uma frase longa de senha ou dados aleatórios a partir de um gerenciador de senhas são muito mais difíceis de decifrar do que algo como Password1!, que é susceptível de transmitir a maioria das verificações de força de senha do aplicativo.

A recuperação de senha é uma outra função importante e com a qual você precisa ter cuidado – caso contrário, os invasores podem, fácil e rapidamente, roubar informações do usuário e sequestrar sua identidade. O Forgot Password Cheat Sheet do OWASP pode ajudar você a criar uma função de recuperação segura, que abranja coisas como a escolha e a utilização de boas perguntas de segurança do usuário, verificando apropriadamente a resposta dessas perguntas e usando um canal lateral para enviar um token de redefinição de senha.

Armazenar senhas com segurança é mais um passo extremamente importante. Não é suficiente só apenas usar salt e hash em senhas. Password Storage Cheat Sheet do OWASP explica o que você precisa fazer e quais algoritmos usar.

Gerenciamento de sessão

Depois de estabelecer a identidade de um usuário, é preciso associá-la a uma ID de sessão única para todas as ações que um usuário executar depois de fazer o login. A ID de sessão do usuário deve ser cuidadosamente gerenciada e protegida: os invasores podem representar o papel do usuário adivinhando ou roubando a identificação da sessão. O gerenciamento de sessão Cheat Sheet do OWASP explica como configurar corretamente uma sessão, como gerenciar as diferentes etapas de um ciclo de vida da id e os ataques e as defesas comuns no gerenciamento de sessão.

Para maiores informações sobre autenticação e como fazê-la corretamente, dê um pulo em Authentication Cheat Sheet da OWASP.

Estamos no meio do caminho da nossa lista. O próximo item será o sexto: proteção de dados e privacidade.

***

Artigo traduzido pela Redação iMasters com autorização do autor. Publicado originalmente em http://swreflections.blogspot.com.br/2014/06/10-things-you-can-do-as-developer-to.html