Módulo 13 - Quando dá errado: erros e robustez

Validar a entrada: a muralha de defesa

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026

O que você vai aprender

  • Entender por que nunca se deve confiar em dados de fora.
  • Validar a entrada barrando dados inválidos na porta do programa.
  • Combinar validação com cláusulas de guarda e mensagens claras.
  • Reconhecer a validação como a primeira defesa contra erros e abusos.

Nunca confie no que vem de fora

Se existe uma única frase para levar da robustez, é esta: nunca confie nos dados que vêm de fora. Tudo que o programa recebe do mundo externo, o que o usuário digita, o que lê de um arquivo, o que chega pela internet, pode vir errado, vazio, fora de faixa ou até malicioso. O usuário digita letras onde você esperava um número, deixa o campo em branco, coloca uma data impossível, ou tenta de propósito quebrar o sistema. Um programa ingênuo pega esse dado e o usa direto, e é aí que nascem a maioria dos erros de execução e das brechas de segurança. Um programa robusto faz diferente: ele confere cada dado que entra, na porta, antes de deixá-lo circular por dentro. Essa conferência é a validação de entrada, e é a defesa mais importante que existe.

Validar é fazer uma série de perguntas ao dado antes de aceitá-lo, e você já sabe fazê-las desde o módulo de strings. O campo está vazio quando não deveria? O número está dentro da faixa permitida? A data existe de verdade? O e-mail tem o formato certo? O texto não passou do tamanho máximo? Cada pergunta é uma regra, e o dado só entra se passar por todas. A ferramenta perfeita para isso é a cláusula de guarda do módulo de decisões: logo no começo, você testa cada regra e, se alguma falhar, avisa o usuário com uma mensagem clara e recusa o dado ali mesmo. Quando o dado passa por todas as guardas, o resto do programa trabalha em segurança, sabendo que a entrada é confiável.

função cadastrarIdade(texto)
  se texto está vazio então
    retorne "Informe a idade"
  fim
  se texto não é um número então
    retorne "A idade deve conter apenas números"
  fim
  idade <- converterParaNumero(texto)
  se idade < 0 ou idade > 130 então
    retorne "Idade fora de uma faixa válida"
  fim
  // daqui para baixo, a idade é confiável:
  salvar(idade)
  retorne "Cadastro concluído"
fim

Guardas validam a entrada uma regra por vez. Só depois de passar por todas o dado é usado, com segurança.

Uma muralha com um portão na entrada de um castelo rotulado programa. Vários dados tentam entrar: um número válido passa pelo portão; um campo vazio, um texto com letras e um valor gigante são barrados por guardas no portão, cada um com uma etiqueta de motivo da recusa. Só o dado válido chega ao interior.
A validação é a muralha do programa: barra na porta o dado vazio, malformado ou fora de faixa; só o válido entra.

Validação também é segurança

Validar a entrada não previne só erros acidentais; é a primeira linha de defesa contra abusos intencionais. Alguém mal-intencionado pode digitar um texto gigantesco para tentar travar o programa, ou inserir comandos disfarçados num campo esperando que o sistema os execute. Programas que não validam a entrada são a porta de entrada da maioria dos ataques a aplicações. Por isso, a mesma disciplina que barra o campo vazio também barra o texto absurdamente longo, os caracteres estranhos onde só deveriam existir números, e os conteúdos suspeitos. A regra prática é limitar tudo: tamanho máximo, faixa de valores, tipo esperado, formato. Quanto mais estreita a porta, menos coisa ruim entra. Neste curso você foca na robustez, evitar que o programa quebre com dados ruins, mas vale saber que a mesma validação é o alicerce da segurança de qualquer aplicação séria.

🎮 Jogo da aula

Esse dado deve passar?

Um campo pede a idade (número de 0 a 130). Decida se cada entrada deve passar na validação (verdadeiro) ou ser barrada (falso).

Validar cedo, validar sempre

A hora de validar é o mais cedo possível, na porta de entrada, assim que o dado chega. Validar cedo tem duas vantagens: barra o problema antes que ele se espalhe pelo código, e concentra as regras num lugar só, fácil de achar e manter. Um erro comum é validar tarde, deixar o dado ruim circular e só perceber lá no fundo, quando o programa quebra num lugar distante da causa; caçar esse tipo de bug é penoso. Outra armadilha é validar num lugar e esquecer em outro: se o mesmo dado entra por dois caminhos, os dois precisam validar, ou um vira brecha. A mentalidade defensiva que amarra tudo isso é o assunto da próxima aula, mas o princípio já vale: trate a fronteira do seu programa como uma alfândega rigorosa, onde todo dado é revistado antes de entrar, e você terá evitado uma legião de erros antes mesmo de eles nascerem.

Teste rápido

Por que a regra de ouro da robustez é nunca confiar nos dados que vêm de fora do programa?

Perguntas frequentes

O que é validar a entrada?
É conferir se os dados que chegam ao programa atendem às regras esperadas antes de usá-los: não vazio, dentro da faixa, formato certo, tamanho máximo. Barra o dado ruim na porta, evitando erros e abusos lá dentro. É a defesa mais importante da robustez e da segurança.
Por que não confiar nos dados do usuário?
Porque o usuário erra, deixa campos em branco, digita letras onde se espera número e às vezes tenta quebrar o sistema de propósito. Dados externos não estão sob o seu controle. Usá-los sem conferir é a maior fonte de erros de execução e de brechas de segurança. Trate todo dado de fora como não confiável.
Qual ferramenta uso para validar?
As cláusulas de guarda do módulo de decisões, combinadas com as verificações de texto do módulo de strings. Você testa cada regra logo no começo e, se alguma falhar, avisa com uma mensagem clara e recusa o dado. Quando ele passa por todas as guardas, o resto do programa trabalha em segurança.
Validação tem a ver com segurança?
Tem, e muito. A validação é a primeira linha de defesa contra abusos: textos gigantes para travar o sistema, caracteres estranhos, conteúdos maliciosos. Programas que não validam a entrada são a porta de entrada da maioria dos ataques. Limitar tamanho, faixa, tipo e formato estreita essa porta.
Onde é o melhor lugar para validar?
O mais cedo possível, na porta de entrada, assim que o dado chega. Validar cedo barra o problema antes que ele se espalhe e concentra as regras num lugar fácil de manter. Validar tarde deixa o dado ruim circular e o erro estourar longe da causa, o que dificulta muito a caça ao bug.
E se o mesmo dado entra por vários caminhos?
Todos os caminhos precisam validar, ou um deles vira brecha. Uma boa prática é concentrar a validação numa função reutilizável e chamá-la em cada entrada, para não esquecer nenhuma e não repetir as regras. Assim a alfândega é a mesma em toda fronteira do programa.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.