Validar CPF: por que validar é um problema mais difícil do que gerar
Gerar um CPF válido é, computacionalmente, um problema fechado: os nove primeiros dígitos são escolhidos e os dois verificadores são derivados deles por construção — o resultado é sempre válido, porque não existe caminho para um valor inválido sair do gerador. Validar é o problema inverso e estruturalmente mais exigente: a entrada pode ser qualquer coisa — formatada ou não, com espaços, com letras misturadas, vazia, com o comprimento errado, ou tecnicamente bem formada mas matematicamente inválida — e o validador precisa tratar corretamente cada um desses casos antes mesmo de chegar ao cálculo do Módulo 11 documentado na página do gerador de CPF.
A armadilha dos dígitos repetidos
O caso mais comumente esquecido em implementações de validação de CPF:
sequências como 111.111.111-11 ou
000.000.000-00 produzem, pela fórmula pura de Módulo 11,
dígitos verificadores "corretos" — a matemática não falha para esses
casos. A Receita Federal, porém, nunca emite CPF com todos os dígitos
iguais, então um validador correto precisa checar esse padrão
explicitamente, como uma regra separada da fórmula,
antes ou depois do cálculo do dígito verificador. Um validador que só
implementa o Módulo 11 sem essa checagem adicional aceita 10 valores
inválidos (de 000...0 a 999...9) como se fossem CPFs reais.
Front-end vs. back-end: duas validações com propósitos diferentes
A validação no front-end existe para dar feedback imediato ao usuário (destacar o campo em vermelho antes mesmo de enviar o formulário) — mas é inteiramente contornável por qualquer pessoa que desabilite JavaScript ou chame a API diretamente. A validação no back-end não é opcional nem redundante: é a única camada que garante, de fato, que um CPF estruturalmente inválido nunca chegue a ser persistido num banco de dados. Um sistema que confia só na validação client-side tem, na prática, nenhuma validação real.