Pular para o conteúdo

Validação rigorosa de dados: prevenindo falhas de segurança e dados inconsistentes com Zod e TypeScript

TypeScript não valida o que chega da internet. Veja como usar Zod para barrar dados inválidos na entrada da API e do formulário — com um único esquema.

Por Equipe We Codex3 min de leitura

TypeScript dá uma sensação de segurança enganosa. Os tipos existem só enquanto você programa; em produção, o que chega numa requisição é texto vindo de qualquer lugar. Se a sua API confia que idade é número porque o tipo diz que é, um único "idade": "abc" pode gravar lixo no banco — ou abrir uma brecha.

O papel do Zod

Zod é uma biblioteca que valida dados em tempo de execução e, ao mesmo tempo, gera o tipo TypeScript a partir da regra. Um esquema, duas garantias.

ts
import { z } from 'zod'

export const ClienteSchema = z.object({
  nome: z.string().trim().min(2).max(80),
  email: z.string().trim().toLowerCase().email(),
  telefone: z.string().regex(/^\d{10,11}$/),
  plano: z.enum(['basico', 'pro']),
})

export type Cliente = z.infer<typeof ClienteSchema>

No controller, ClienteSchema.parse(req.body) ou devolve um objeto limpo e tipado, ou lança um erro com a lista exata do que está errado.

Valide na borda, sempre

A validação mora na entrada do sistema — o controller da arquitetura em camadas (Arquitetura em camadas no Node.js: como organizar Controllers, Services e Repositories). Daí para dentro, os services trabalham com dados confiáveis.

O mesmo esquema no front

Compartilhando o esquema entre formulário e API, o usuário recebe o erro antes de enviar e o servidor confere de novo, sem divergência entre as regras. Esse é o coração do TypeScript de ponta a ponta: reduzindo bugs em produção com tipagem unificada entre front, app e back.

Validação não é sanitização

Validar diz se o dado está no formato certo. Sanitizar remove o que é perigoso. Os dois andam juntos e não substituem consultas parametrizadas ao banco — veja Sanitização de entradas: o que limpar, onde e por quê e SQL injection em 2026: ainda acontece, e é assim que se previne.

Além do formato

Um e-mail pode passar no .email() e ainda assim não existir, ter um erro de digitação ou ser descartável. Para cadastros e leads, vale ir além do regex: Validação de e-mail além do regex: domínios inexistentes, typos e descartáveis.

Todo sistema que a We Codex entrega valida entrada no cliente e no servidor. Veja Segurança Anti-Hacker e sistemas web, ou fale com a gente.

  • Zod
  • TypeScript
  • Validação
  • Segurança
CompartilharWhatsAppLinkedIn

Resolver de vez, com quem faz isso todo dia

Precisa de uma API ou integração que não caia quando o negócio crescer?

Este artigo mostra o caminho. A implementação sob medida — o detalhe que muda o resultado no seu caso — é o trabalho da We Codex, empresa de engenharia do grupo Wocom.