Uma API expõe funções e dados a programas. Mal protegida, pode deixar vazar informação, aceitar ações não autorizadas ou colapsar sob uma avalanche de pedidos.
Estas práticas são válidas seja qual for a linguagem usada.
Verificar quem chama, e o que tem o direito de fazer
Autenticação E autorização. Em cada pedido: identificar quem chama (token) e depois verificar os seus direitos sobre o recurso específico em causa. Nunca assumir que um utilizador autenticado tem o direito de fazer tudo nem de ver os dados de outro.
Não confiar em nada do que entra
Validação rigorosa. Controlar o tipo, formato, tamanho e limites de cada parâmetro. Rejeitar por defeito. Desconfiar dos identificadores passados pelo cliente: é assim que passa o acesso direto a um objeto de outrem.
Aguentar a carga
Limitação de taxa e quotas. Limitar o número de pedidos por cliente, por chave e por rota. Prever quotas e um comportamento limpo em caso de excesso, para resistir a abusos e picos de tráfego.
Proteger o transporte e os segredos
- HTTPS obrigatório, versões de TLS atualizadas.
- Chaves e segredos fora do código e do repositório, num cofre ou em variáveis de ambiente.
- Rotação de segredos e possibilidade de revogação.
Ver, versionar, reduzir
- Registar acessos e erros, monitorizar anomalias, exportar para um SIEM.
- Versionar a API para que possa evoluir sem quebrar, retirando as versões antigas.
- Expor apenas os endpoints necessários; manter as dependências atualizadas; testar regularmente (revisão, scan).
Perguntas frequentes
Uma chave de API é suficiente para proteger o acesso?
Não. Uma chave identifica, mas não autoriza de forma detalhada e pode ser roubada. É preciso autenticação, autorização por recurso e limitação de taxa.
Devem mostrar-se mensagens de erro detalhadas?
Não em produção: informam o atacante. Mensagem genérica do lado do cliente, detalhe nos registos do lado do servidor.
Como evitar o acesso direto a um objeto de outrem?
Verificar sempre que quem chama tem direito sobre o identificador pedido; nunca confiar num identificador fornecido sem verificação.
Réagissez
Commentaires