SobreProjetosServiços BlogFAQContato
Início/Blog/Dados e infraestrutura
Dados e infraestrutura

Segurança básica que todo sistema web precisa ter

O piso de segurança de qualquer sistema em produção: autenticação correta, permissão por perfil, trilha de auditoria, atualização de dependências e backup.

27 de abr. de 2026 4 min de leitura por Natiam Gabriel
Segurança básica que todo sistema web precisa ter
Resposta curta

O piso de segurança de um sistema em produção tem cinco itens: senha com hash forte e segundo fator, permissão verificada no servidor a cada requisição, trilha de auditoria, dependências atualizadas e backup testado. Quase todo incidente em sistema de pequena empresa vem da falta de um desses.

Segurança de sistema web em pequena e média empresa quase nunca cai por técnica sofisticada. Cai por senha guardada errado, endpoint sem verificação de permissão, biblioteca desatualizada com falha pública e backup que nunca foi restaurado. Este é o piso, cinco itens que todo sistema em produção precisa ter antes de qualquer coisa avançada.

1. Autenticação: guardar senha e provar identidade

Nunca guarde senha em texto ou com MD5/SHA1. Use um algoritmo feito para isso: bcrypt, scrypt ou Argon2. Eles são lentos de propósito, e essa lentidão é a defesa contra ataque de força bruta em cima de um banco vazado.

Além disso:

  • Limite de tentativas por conta e por IP, com atraso progressivo. Sem isso, uma lista de senhas comuns derruba contas em minutos.
  • Segundo fator ao menos para perfis administrativos. Aplicativo autenticador (TOTP) é melhor que SMS, que é vulnerável a troca de chip.
  • Sessão com expiração e invalidação real no logout. Token que continua válido depois do logout não é logout.
  • Recuperação de senha com token de uso único e prazo curto, sem revelar se o e-mail existe.
  • Nunca envie senha por e-mail ou WhatsApp, nem no primeiro acesso. Envie link de definição.

2. Autorização: o erro mais comum e mais grave

Autenticação responde "quem é você". Autorização responde "você pode ver isso". A falha campeã em sistema de empresa é o endpoint que confere se o usuário está logado, mas não confere se aquele registro é dele.

GET /api/pedidos/1042 → devolve o pedido
GET /api/pedidos/1043 → devolve o pedido de outra empresa

Trocar o número na URL não deveria funcionar, e funciona com frequência assustadora. Regras práticas:

  • Verifique permissão no servidor, em toda requisição. Esconder o botão na tela não é controle de acesso; é decoração.
  • Filtre por dono na consulta, não depois de buscar. WHERE id = ? AND empresa_id = ?.
  • Use perfis, não permissões soltas por usuário. Administrador, gestor, operador, leitura. Fica auditável e evita permissão órfã.
  • Negue por padrão. Endpoint novo deve nascer bloqueado até alguém liberar explicitamente.
  • Teste automatizado de permissão. Um teste que autentica como usuário A e tenta acessar o recurso do usuário B, para cada endpoint.

3. Trilha de auditoria

Registre quem fez o quê, quando e de onde. No mínimo: login e tentativa falha, criação, alteração e exclusão de registro relevante, mudança de permissão, exportação de dados e acesso a dado pessoal sensível.

Sem esse registro, você não consegue nem detectar acesso indevido nem provar que ele não aconteceu, e as duas coisas importam, tanto em conflito interno quanto em fiscalização.

O log de auditoria precisa ser somente inserção, guardado separado dos dados operacionais, e não pode conter senha nem token.

4. Atualização de dependências

Um sistema típico depende de centenas de bibliotecas de terceiros. Falhas são descobertas e publicadas o tempo todo, com exemplo de exploração junto. Quem não atualiza fica exposto a algo público e conhecido.

O processo mínimo:

Item Frequência Como
Verificador de dependências A cada build npm audit, pip-audit, equivalente do ecossistema
Atualização de patch e correção Mensal Pacote de atualizações com testes rodando
Atualização de versão maior Semestral Planejada, com janela e plano de volta
Sistema operacional do servidor Automático para segurança Atualizações de segurança sem intervenção
Versão do runtime e do banco Antes do fim do suporte Acompanhe o calendário de fim de vida

Rodar uma versão de linguagem ou banco fora de suporte significa não receber mais correção de segurança. É risco acumulado que só cresce.

5. O básico de infraestrutura

  • HTTPS em tudo, com redirecionamento e renovação automática de certificado.
  • Banco de dados sem porta aberta para a internet. Acesso só pela rede interna ou por túnel.
  • Segredos fora do repositório. Chaves de API e senhas em variáveis de ambiente ou cofre, nunca no código versionado. Se já vazou uma chave no histórico do Git, rotacione, apagar o commit não basta.
  • Usuário do banco com permissão mínima. A aplicação não precisa ser superusuário.
  • Backup testado, com restauração cronometrada. Contra ransomware, é a única defesa que realmente funciona.
  • Painéis administrativos de banco, filas e monitoramento não expostos publicamente.

O que a aplicação precisa validar

Três defesas cobrem a maior parte das falhas clássicas de injeção:

Consultas parametrizadas, sempre. Nunca concatene texto vindo do usuário dentro de SQL. Todo framework moderno faz isso por padrão; o risco mora nas consultas escritas à mão.

Escapar saída em HTML. Conteúdo enviado por usuário renderizado sem escape vira execução de script no navegador de outro usuário.

Validar entrada por tipo e tamanho no servidor. Validação no navegador é conveniência para o usuário, não barreira, quem ataca não usa o navegador.

Some a isso: limite de tamanho e verificação de tipo real em upload de arquivo, arquivos servidos de domínio ou caminho sem execução, e limite de requisições por minuto nos endpoints públicos.

Checklist para revisar hoje

  • Senhas com bcrypt, scrypt ou Argon2
  • Segundo fator ativo para administradores
  • Limite de tentativas de login
  • Permissão verificada no servidor em todos os endpoints
  • Teste automatizado provando que usuário A não acessa dado de B
  • Trilha de auditoria de acesso e alteração
  • Verificador de dependências rodando no pipeline
  • HTTPS obrigatório e certificado renovando sozinho
  • Banco sem exposição pública
  • Segredos fora do repositório
  • Backup restaurado e cronometrado nos últimos 90 dias

Nenhum item dessa lista é caro ou demorado isoladamente. O que custa é implementar depois do incidente, com cliente ligando e prazo de comunicação à autoridade correndo.

Perguntas frequentes

Por onde começar se o sistema já está em produção sem nada disso?

Pela ordem de risco: primeiro verifique se as senhas estão com hash forte e se o banco não está exposto à internet, depois revise a verificação de permissão nos endpoints, depois ative auditoria e atualize as dependências com falha conhecida. Backup testado entra em paralelo.

Autenticação de dois fatores é exagero para sistema interno?

Não, e é uma das medidas de melhor custo-benefício. Senha vazada de outro serviço é a origem mais comum de acesso indevido. Ative pelo menos para perfis administrativos, usando aplicativo autenticador em vez de SMS.

Como saber se o sistema tem vulnerabilidade conhecida?

Rode um verificador de dependências no pipeline, como npm audit, pip-audit ou as ferramentas equivalentes do seu ecossistema, e mantenha alerta automático de novas falhas. A maioria das invasões usa falha pública e antiga, não técnica inédita.

Tem um processo que consome o time?

Me conta como funciona hoje. Se der para automatizar, eu te digo por onde começar — a conversa de diagnóstico não é cobrada.

Natiam Gabriel
Sobre o autor

Natiam Gabriel é AI Engineer & Full-Stack Developer e fundador da Retti Tech, estúdio de desenvolvimento de software que atende empresas em todo o Brasil. Constrói sistemas web sob medida, automações e integrações, com ou sem inteligência artificial, do levantamento de requisitos até a operação em produção. Mais de 20 empresas usam em produção os sistemas que desenvolveu.