Pular para o conteudo principal

Entradas e APIs Mais Seguras

Como tratar entrada externa com menos ingenuidade e desenhar APIs que não aceitam dado demais por conveniencia.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

O problema

Muita API fica vulneravel não por falta de login, mas porque aceita entrada externa demais sem critério.

Campo extra passa, string malformada segue, id inesperado entra no fluxo e a camada de serviço tenta resolver isso tarde demais.

Esse “depois a gente valida” e o tipo de atalho que abre porta para problema serio.

Modelo mental

Entrada externa nunca deve entrar no backend como verdade pronta.

Ela precisa passar por um filtro duro na borda:

  • o formato e valido?
  • esse campo existe no contrato?
  • esse valor faz sentido neste contexto?
  • este usuário pode mandar isso?

Segurança aqui e disciplina estrutural na fronteira da rede.

Quebrando o problema

Uma API mais segura faz isto:

  1. Valida schema assim que a request chega na rota.
  2. Remove campos que o fluxo não precisa.
  3. Normaliza string, data e email antes da lógica de negócio.
  4. Rejeita o request cedo quando algo não bate.
  5. Ainda checa permissao e regra de negócio antes de gravar ou executar efeito.

Isso reduz bastante a superficie para abuso e para estado inesperado.

Exemplo simples

Imagine um endpoint de atualização de perfil.

Se o controller aceita o JSON cru e faz merge cego no banco, qualquer campo extra pode vazar para o modelo:

  • role: "admin"
  • billingStatus: "paid"
  • internalConfig: {}

Uma versão mais segura aceita só o contrato mínimo:

  • name
  • bio
  • avatarUrl

O resto cai fora ou gera erro.

Erros comuns

  • Confiar que o frontend sempre vai mandar o payload certo.
  • Validar apenas tipo primitivo e ignorar regra de negócio.
  • Deixar endpoint genérico demais para “flexibilidade futura”.
  • Aceitar campo extra e fingir que isso não importa porque “a gente ignora”.
  • Achar que autenticação sozinha torna o dado confiavel.

Como um senior pensa

Quem tem mais experiência trata payload externo como hostil até prova em contrario.

O critério costuma ser:

“Vamos validar o schema na borda e aceitar o menor contrato possível. Cada campo extra que entra aumenta o que o sistema precisa defender.”

O que o entrevistador quer ver

Em entrevista de backend ou segurança, isso mostra profundidade rápido.

  • Você validar dado na borda, não la no fundo da regra de negócio.
  • Você desenhar contrato mínimo e explícito.
  • Você ligar segurança a design de API, não só a middleware de auth.

Uma resposta forte costuma soar assim:

“Eu validaria schema logo na entrada e aceitaria o menor contrato possível. Depois disso ainda verificaria regra de negócio e permissao, porque payload bem formatado não significa payload legitimo.”

API segura não tenta sobreviver a qualquer payload. Ela aceita pouco e deliberadamente.

Resumo rápido

O que vale manter na cabeça

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Próximo artigo Limites de Confiança Artigo anterior Autenticação em SPAs: por que localStorage quase sempre e ma ideia

Continue explorando

Artigos relacionados