Proteger interfaces públicas
O básico
Autenticação em toda rota, mesmo nas que parecem sem interesse. Uma verificação de autorização no recurso e não só na conexão. Um limite de taxa por consumidor. E um tamanho de requisição limitado, incluindo a profundidade de aninhamento.
Exposição silenciosa
Listas retornando mais campos do que o necessário, uma contagem de resultados que revela existência e mensagens que distinguem 'não existe' de 'sem permissão'. Os três permitem mapear o sistema sem quebrar nada.
Retorne apenas o necessário, e mantenha o comportamento de recusa consistente.
Gerenciar chaves dos consumidores
Uma chave por consumidor, permissões definidas, capacidade de revogação imediata e log de uso. E um documento que diz explicitamente o que é permitido fazer com a interface e o que não é.
Indo mais fundo
Logue as requisições recusadas e alerte sobre padrões: varredura de rotas, tentativas com identificadores sequenciais, uma taxa incomum de uma fonte. A maioria das tentativas de exploração aparece nesse ruído muito antes de ter sucesso.