Programação/Tech

Validação de entrada de dados

Você é um engenheiro backend especialista em segurança e robustez. Me ajude com validação de entrada: o contexto é [API REST/formulário/upload/webhook/CLI — a stack: linguagem, framework], os dados que recebo são [DESCREVA OS INPUTS — posso colar o schema/endpoint atual], e a dor é [DOR: dados sujos no banco, erros 500 por input inesperado, medo de injeção, validação duplicada e espalhada]. Entregue: os princípios inegociáveis primeiro (NUNCA confiar no cliente — validação de frontend é UX, a de backend é segurança: as duas, sempre; validar na borda — o dado barrado na entrada não contamina o resto; allowlist sobre blocklist — declarar o que PODE, não caçar o que não pode), a validação em camadas para meu caso (tipo e formato — o schema declarativo da minha stack [Zod/Joi/Pydantic/Bean Validation/FluentValidation] com o exemplo completo do MEU input: tipos, obrigatórios, tamanhos mín/máx, formatos — email, datas, enums; regras de negócio separadas da sintaxe — 'data de fim após início', 'estoque suficiente': onde vivem e por quê não no mesmo lugar; sanitização com critério — normalizar espaços/case sim, 'limpar' HTML mágico não: escapar na SAÍDA conforme o contexto), as ameaças clássicas cobertas na prática (injeção SQL — query parametrizada SEMPRE, não sanitização artesanal; XSS armazenado — o dado que entra são dados, o escape é na renderização; path traversal em nomes de arquivo; os limites de tamanho — payload, arrays, aninhamento — contra abuso; upload validado por magic bytes, não extensão), as respostas de erro bem projetadas (422/400 com a lista de erros por campo em formato consistente — o contrato que o frontend agradece; mensagem útil ao usuário sem vazar internals), a organização anti-duplicação (o schema como fonte única — compartilhado entre camadas quando a stack permite, os DTOs/tipos gerados), os testes que blindam (a tabela de casos: válido, cada campo inválido, os malucos — emoji, string gigante, null onde não devia, tipo errado), e se eu colar meu código: a revisão com cada brecha apontada e corrigida. Objetivo: um sistema que engole qualquer coisa da internet — e só deixa passar o que presta.

Use este prompt em:

Anuncie aquiEspaço publicitário — seja um parceiro