𝗜 𝗔𝘂𝗱𝗶𝘁𝗲𝗶 𝗠𝗲𝘂𝘀 𝗣𝗿𝗼𝗷𝗲𝘁𝗼𝘀 𝗣𝗮𝗿𝗮𝗹𝗲𝗹𝗼𝘀 𝗲𝗺 𝗕𝘂𝘀𝗰𝗮 𝗱𝗲 𝗦𝗲𝗴𝘂𝗿𝗮𝗻ç𝗮 — 𝗔𝗾𝘂𝗶 𝗘𝘀𝘁á 𝗢 𝗤𝘂𝗲 𝗘𝗻𝗰𝗼𝗻𝘁𝗿𝗲𝗶

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:

  1. 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.
  1. 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 .env mais tarde, mas o Git mantém cada versão antiga do seu código para sempre.
  1. 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.
  1. 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.
  1. XSS via innerHTML Usei innerHTML para renderizar dados de usuários no meu frontend. Isso permite que invasores injetem scripts no seu site.
  1. 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.
  1. Configurações de CORS permissivas Usei allow_origins=["*"] no meu middleware. Isso permite que qualquer site faça requisições para sua API.
  1. 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.

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