𝗜 𝗔𝘂𝗱𝗶𝘁𝗲𝗶 𝗠𝗲𝘂𝘀 𝗣𝗿𝗼𝗷𝗲𝘁𝗼𝘀 𝗣𝗮𝗿𝗮𝗹𝗲𝗹𝗼𝘀 𝗲𝗺 𝗕𝘂𝘀𝗰𝗮 𝗱𝗲 𝗦𝗲𝗴𝘂𝗿𝗮𝗻ç𝗮 — 𝗔𝗾𝘂𝗶 𝗘𝘀𝘁á 𝗢 𝗤𝘂𝗲 𝗘𝗻𝗰𝗼𝗻𝘁𝗿𝗲𝗶
Recentemente, auditei todos os meus projetos paralelos. Verifiquei meus backends em FastAPI, bots do Telegram e aplicações web. Eu achava que era cuidadoso.
Eu estava errado.
Encontrei bugs reais que eu realmente enviei para produção. Estes não são problemas teóricos. São erros que cometi enquanto tentava avançar rápido.
Aqui estão os principais problemas que encontrei e como corrigi-los:
- Autenticação Condicional Escrevi código que só verificava chaves de API se um segredo existisse. Se eu esquecesse de configurar o segredo no meu ambiente, a verificação era totalmente ignorada. Isso deixava minha API aberta para todos.
- Correção: Nunca torne a autenticação condicional. Se o segredo estiver faltando, o app deve lançar um erro e parar.
- Vazamento de chaves no histórico do Git
Encontrei chaves de API antigas no meu histórico do Git. Eu as havia movido para arquivos
.envmais tarde, mas o Git mantém cada versão antiga do seu código para sempre.
- Correção: Trate qualquer chave já enviada ao Git como comprometida. Revogue-a imediatamente. Use ferramentas como
git-filter-repopara limpar seu histórico.
- Endpoints de depuração remanescentes Deixei endpoints em produção que mostravam minha configuração de banco de dados e definições do sistema. Eles são úteis durante o desenvolvimento, mas perigosos no mundo real.
- Correção: Adicione a remoção de endpoints de depuração ao seu checklist de implantação.
- Mensagens de erro detalhadas demais Eu estava retornando erros brutos do sistema para o usuário. Esses erros revelam seus caminhos de arquivos, tipos de banco de dados e versões de bibliotecas. Um invasor pode usar esses dados para atacar seu sistema.
- Correção: Registre o erro completo internamente para você. Retorne uma mensagem genérica de "Internal Server Error" para o cliente.
- XSS via innerHTML
Usei
innerHTMLpara renderizar dados de usuários no meu frontend. Isso permite que invasores injetem scripts no seu site.
- Correção: Sempre sanitize os dados ou use
textContentem vez deinnerHTML.
- Falta de Rate Limiting Eu tinha endpoints que chamavam modelos de IA caros sem limites. Um único usuário poderia gerar uma conta enorme em minutos.
- Correção: A autenticação impede usuários não autorizados. O rate limiting impede que usuários autorizados abusem do seu sistema. Você precisa de ambos.
- Configurações de CORS permissivas
Usei
allow_origins=["*"]no meu middleware. Isso permite que qualquer site faça requisições para sua API.
- Correção: Permita apenas seus domínios específicos em produção.
- Vazamento de Arquivos Eu escrevi um código que criava arquivos temporários, mas não os excluía se o processo travasse. Esses arquivos permanecem no seu servidor para sempre.
- Correção: Use um bloco try-finally para garantir que os arquivos sejam excluídos mesmo que ocorra um erro.
Problemas de segurança raramente são intencionais. Eles são o resultado de dizer "Vou consertar isso depois". O "depois" nunca chega.
Incorpore a segurança ao seu fluxo de trabalho desde o primeiro dia. Verifique seu código antes de fazer o commit e antes de fazer o deploy.
Fonte: https://dev.to/justjinoit/i-audited-my-own-side-projects-for-security-issues-heres-what-i-found-1ahb