Símbolo da AmivuSímbolo da AmivuDevelopers

Segurança

Onde guardar a chave, como rotacionar e o que a Amivu garante.

Uma chave de API alcança a superfície inteira de uma organização — contatos, conversas e a capacidade de enviar mensagem em nome dela. Estas são as práticas que importam.

A chave

  • Uma por integração. Revogar uma não afeta as outras, e é o que permite desligar um fornecedor sem parar o resto.
  • Só os escopos necessários. Um agente que responde precisa de conversations:read e messages:write — e não de contacts:write.
  • Nunca no navegador. Nem em aplicativo de celular. Não há ofuscação que resolva; quem abre o inspetor lê o valor.
  • Nunca no repositório. Variável de ambiente ou cofre de segredos. Se entrou num commit, considere-a vazada mesmo depois de removida — o histórico fica.
  • Teste com chave de teste. É a diferença entre um erro num sandbox e uma mensagem no WhatsApp de um cliente.

O endpoint de webhook

  • Confira a assinatura sempre. Sem isso, qualquer pessoa que descubra o seu endereço injeta eventos falsos. Como conferir.
  • Confira o timestamp junto. Um verificador que ignora o t aceita uma entrega capturada ontem.
  • HTTPS, sempre. A assinatura prova origem e integridade; ela não esconde o conteúdo. Endereço http:// é recusado no cadastro.
  • Não confie no corpo antes de conferir. A ordem é: assinatura, depois análise.

O que a Amivu garante

  • Isolamento entre organizações no banco. Não é filtro de consulta: é política de linha, com uma credencial de banco que não pode ignorá-la. Uma chave de uma conta não alcança outra nem conhecendo o identificador.
  • Segredos não recuperáveis. A chave de API é guardada como resumo criptográfico; nem nós conseguimos lê-la de volta.
  • Segredo de webhook cifrado em repouso. Ele precisa ser recuperável — é o que você usa para conferir — e por isso é cifrado, não hasheado.
  • Registro sem corpo. O registro de chamadas guarda método, rota, status, duração e chave, por 7 dias. Nunca corpo de requisição ou de resposta — eles carregam mensagem de cliente e telefone, e um registro é o lugar mais copiado de um sistema.
  • Nada de credencial de provedor na resposta. Token da Meta, cookie de sessão pareada e segredo de aplicativo não atravessam a API pública.
O tenant vem da credencial, nunca do corpo
Não existe campo organization_id em requisição nenhuma. A organização é derivada da chave — e é isso que impede a classe inteira de ataque em que alguém pede dado de outra conta.

Se algo vazar

  1. Revogue a chave no painel. Vale na requisição seguinte.
  2. Crie a substituta e atualize a integração.
  3. Olhe o registro de chamadas filtrando por aquela chave. Ele mostra o que foi feito, quando e de qual endereço.
  4. Rotacione o segredo do webhook se ele estava no mesmo lugar.

Encontrou uma falha na própria API? Escreva para seguranca@amivu.com.br antes de divulgar.

Escrevemos sobre operação de atendimento, canais e IA no blog da Amivu.