AxTech Logo escura

Como proteger suas API Keys

Quando se trata de autenticar clientes de API, uma solução comum é fornecer uma API Key para cada um dos seus clientes.

Já que a API Key — enviada em cada chamada — pode ser roubada e usada por uma terceira parte maliciosa em nome do seu app, recomendamos fornecer uma chave secreta junto com a API Key (também conhecida como identificador de cliente).

O seguinte método é aplicável ao conectar uma API a partir de um servidor e não de um cliente.

Esta chave secreta será usada para criar um token de acesso temporário, que é único para cada chamada e será enviado junto com sua API Key. Se a mesma chamada for repetida, isso gerará um erro, pois o token de acesso destina-se a ser usado apenas uma vez.

Aqui está o que seus apps precisam fazer para cada chamada:

  1. Pegar a API Key pública
  2. Pegar a Chave Secreta (nunca deve ser compartilhada)
  3. Gerar um “nonce“, que é um número aleatório que só pode ser usado uma vez
  4. Gerar o “timestamp“, que é o timestamp UNIX
  5. Gerar o token de acesso, que é criado através do hash da API Key, usando o algoritmo de hash de sua escolha: $apikey = hash_hmac(‘sha1’, $APIKey, $SecretKey.$timestamp.$nonce); Para gerar a variante HMAC do resumo da mensagem, agrupamos a chave secreta, timestamp e nonce.
  6. Conectamos a API enviando a API Key, o timestamp, o nonce e o token de acesso gerado. Cuidado para nunca enviar sua chave secreta!

Do lado do servidor, aqui está a proteção que você precisa colocar em prática:

  1. Se o parâmetro de timestamp recebido for mais antigo que 15 minutos (ou qualquer outro valor arbitrário), descarte a conexão.
  2. Se o timestamp recebido estiver dentro do intervalo de 15 minutos, verifique se a combinação de “API Key”, “token de acesso”, “nonce” e “timestamp” já existe em seu cache de memória. Se existir, descarte a conexão. Se não, adicione esta entrada ao seu cache e processe a conexão.
  3. Certifique-se de que as entradas em seu cache expiram automaticamente após 15 minutos para não sobrecarregar sua memória.

Como você pode ver, este método depende da capacidade de gerar o token de acesso sem divulgar a chave secreta. Assim, ele funciona bem para uma chamada de API a partir de um servidor, mas não é relevante para conectar APIs de um cliente JavaScript.

Autor:
Colaborador: Stephane Castellani

Leia mais

Seu ecossistema logístico B2B eficiente

Está na hora de terminar com seu provedor de MFT? Veja como o Axway MFT se compara com outros fornecedores de MFT

Quero me manter atualizado

Leia também

Seu ecossistema logístico B2B eficiente

Está na hora de terminar com seu provedor de MFT? Veja como o Axway MFT se compara com outros fornecedores de MFT

Integração B2B 2026: confiança, escala e simplicidade

Superando os desafios da automação com APIs e Inteligência Artificial

Seu ecossistema logístico B2B eficiente

Low-Code, no-code e devX: como a jornada dos desenvolvedores está evoluindo com as novas plataformas

Está na hora de terminar com seu provedor de MFT? Veja como o Axway MFT se compara com outros fornecedores de MFT

Integração B2B 2026: confiança, escala e simplicidade

Quero me manter atualizado

Pesquisar

Quero receber meu ebook gratuito