👾 Inicio | Cronograma | OWASP |
Para criar esse guia usei como base OWASP Secure Coding Practices e OWASP Cheat Sheets
Sempre valide e sanitize todas as entradas de dados vindas dos usuários ou de fontes externas para prevenir ataques de Injeção de SQL, Cross-Site Scripting (XSS) e outros.
A validação de entrada deve ser aplicada tanto no nível sintático quanto no nível semântico.
→ Nunca confie de forma alguma na entrada do usuário.
→ Validar e rejeitar as entradas é melhor do que sanitizá-las.
💡 Leia mais:
Sempre valide dados em um sistema confiável(ou seja, o servidor), codifique todos os caracteres, a menos que sejam considerados seguros e sanitize a saída de dados não confiáveis usando comandos do sistema operacional.
A codificação de saída (output encoding) é uma técnica eficaz para prevenir ataques de Cross-Site Scripting (XSS), que é um dos principais tipos de ataques que podem ser prevenidos por meio dessa prática de segurança.
A autenticação refere-se à validação das informações fornecidas pelo usuário, como nome de usuário e senha, para garantir que correspondam às credenciais corretas e autorizar o acesso ao sistema.
O gerenciamento de credenciais abrange atividades relacionadas ao armazenamento seguro e à proteção das informações de autenticação dos usuários, como senhas, chaves de acesso ou certificados digitais. Isso envolve a implementação de práticas de segurança, como a criptografia, para evitar o acesso não autorizado a essas informações.
Todas as medidas de autenticação devem ser implementadas em um sistema confiável, o que normalmente é o servidor onde o backend da aplicação está em execução.
💡 Veja sobre:
O gerenciamento de sessões refere-se ao processo seguro de lidar com várias solicitações de um único usuário ou entidade em um aplicativo ou serviço baseado na web. Durante uma sessão, que consiste em várias solicitações e transações, um usuário é autenticado para acessar o sistema. O gerenciamento de sessões envolve a troca de informações secretas com usuários autenticados, tornando as comunicações de rede criptografadas essenciais para garantir a segurança do processo.
Boas práticas:
💡 Veja sobre:
No contexto das aplicações web, o controle de acesso depende da autenticação e gerenciamento de sessões:
Broken Access Control ocorre quando um usuário pode ter acesso e executar ações que não lhe são atribuídas.
Exemplo: temos uma aplicação com dois tipos de usuários, admin
e comum
. O usuário admin
pode excluir e editar qualquer usuário comum
, enquanto o comum
só realiza ações na sua própria conta. A falha acontece quando o usuário comum
tem as mesmas ações do usuário admin
, resultando em falha de escalação de privilégios.
Boas práticas:
💡 Veja sobre:
Verifique se a aplicação não exibe mensagens de erro que contenham dados sensíveis que possam auxiliar um atacante, incluindo ID de sessão, versões de software/framework e informações pessoais. Um dos riscos mais comuns relacionados ao tratamento inadequado de erros é o Information Disclosure, que pode revelar informações confidenciais para usuários não autorizados.
Boas práticas:
Logging é essencial para a segurança do código, permitindo aos desenvolvedores monitorar e detectar incidentes de segurança. Práticas adequadas de logging envolvem capturar informações relevantes, como interações do usuário e erros, para análise posterior. Isso ajuda a identificar comportamentos suspeitos e rastrear a causa de erros, facilitando a correção de bugs e a resposta a possíveis ataques. É importante seguir práticas recomendadas, como definir uma estrutura clara de logs e proteger informações confidenciais.
Boas práticas:
💡 Veja sobre Error handling and logging: