Seguranca na pratica / Entradas e APIs mais seguras
Entradas e APIs mais seguras
Entradas e APIs Mais Seguras
Como tratar entrada externa com menos ingenuidade e desenhar APIs que nao aceitam dado demais por conveniencia.
O problema
Muita API fica vulneravel nao por falta de auth, mas porque aceita entrada demais sem criterio.
Campo extra passa, formato errado passa, valor inesperado passa, e o sistema vai tentando lidar com tudo depois.
Esse “depois” costuma sair caro.
Modelo mental
Entrada externa nunca deveria entrar no sistema como verdade pronta.
Ela precisa passar por algumas perguntas:
- este formato e valido?
- este campo deveria existir?
- este valor faz sentido neste contexto?
- este dado tem permissao para provocar essa acao?
Seguranca aqui tem muito a ver com disciplina de fronteira.
Quebrando o problema
Uma forma simples de deixar entrada mais segura e esta:
- valide formato logo na borda
- aceite so os campos que o fluxo realmente precisa
- normalize o que for necessario antes de usar
- rejeite cedo o que nao faz sentido
Isso reduz superficie de erro, abuso e comportamento inesperado.
Exemplo simples
Imagine um endpoint de atualizacao de perfil.
Se ele recebe um objeto inteiro e faz merge cego no usuario, qualquer campo inesperado pode acabar entrando no modelo:
roleisAdmin- configuracao interna
Uma versao melhor aceita so o contrato minimo:
namebioavatarUrl
O ganho aqui nao e so organizacao.
E controle sobre o que realmente pode ser alterado.
Erros comuns
- confiar no frontend para enviar payload correto
- validar tipo sem validar regra de negocio
- aceitar campos extras “porque depois a gente ignora”
- deixar a API generica demais para parecer flexivel
Como um senior pensa
Um senior forte trata input como superficie de risco.
Normalmente isso soa assim:
Eu quero validar cedo e aceitar o menor contrato possivel, porque cada campo extra aumenta a area de comportamento que o sistema precisa defender.
Essa postura melhora seguranca e clareza ao mesmo tempo.
O que o entrevistador quer ver
Em entrevista, isso costuma mostrar maturidade rapido:
- voce entende que input externo precisa ser validado na borda
- voce pensa em contrato minimo, nao em payload aberto
- voce liga seguranca a desenho de API, nao so a middleware
Quem faz isso bem parece alguem que reduz risco antes de ele entrar no sistema.
API mais segura nao aceita tudo e tenta sobreviver. Ela aceita pouco e de forma deliberada.
Se qualquer payload “quase certo” entra no sistema, a borda ainda esta frouxa demais.