Skip to content

Proteção de Segurança da API

Em serviços de API, X-Timestamp, X-Nonce, X-AccessKey e X-Signature são componentes principais comuns de mecanismos de assinatura de solicitação de API, principalmente usados para autenticação, verificação de integridade de dados e prevenção de ataques de repetição.

Análise de Componentes Principais

1. X-Timestamp (Carimbo de Tempo)

Funções

  • Registra o tempo de início da solicitação (normalmente carimbo de tempo Unix) para validação do tempo de resposta do lado do servidor.

Problemas Resolvidos

  • Prevenir Ataques de Repetição: O servidor define um período de validade do carimbo de tempo (por exemplo, 5 minutos), rejeitando diretamente solicitações expiradas. Atacantes não podem repetir solicitações legítimas interceptadas após expirarem.
  • Verificação de Sincronização: Garante que a desvio de tempo entre cliente e servidor esteja dentro de uma faixa razoável, evitando que a manipulação do tempo afete a validade da solicitação.

2. X-Nonce (Número Aleatório Único)

Funções

  • Gera uma string aleatória única (por exemplo, UUID) para garantir a singularidade de cada solicitação.

Problemas Resolvidos

  • Prevenir Solicitações Duplicadas: O servidor armazena em cache valores Nonce (ou combina com carimbos de tempo) para rejeitar solicitações duplicadas que já foram processadas.
  • Aumentar Dinamicidade da Assinatura: Mesmo para solicitações com os mesmos parâmetros, o resultado da assinatura difere devido a Nonces diferentes, evitando reutilização de assinatura.

3. X-AccessKey (Chave de Acesso)

Funções

  • Identifica a identidade do cliente (por exemplo, usuário, aplicação ou serviço), normalmente emparelhado com uma SecretKey pré-atribuída pelo servidor.

Problemas Resolvidos

  • Autenticação: Verifica se o solicitante é um cliente legalmente registrado.

4. X-Signature (Assinatura da Solicitação)

Funções

  • O cliente usa SecretKey para gerar uma assinatura para o conteúdo da solicitação (parâmetros, caminho, carimbo de tempo, Nonce, etc.), e o servidor verifica a assinatura usando o mesmo algoritmo.

Problemas Resolvidos

  • Integridade de Dados: Garante que a solicitação não seja adulterada durante a transmissão (modificações de parâmetros farão com que a verificação da assinatura falhe).
  • Prevenir Falsificação de Identidade: Atacantes sem a SecretKey não podem gerar assinaturas corretas e não podem falsificar solicitações legítimas.
  • Vincular Parâmetros Críticos: Algoritmos de assinatura normalmente incluem métodos de solicitação, caminhos, parâmetros, etc., garantindo consistência entre o conteúdo da solicitação e a assinatura.

Exemplo de Processo Geral

Etapas de Geração de Assinatura do Cliente

  1. Concatenar dados da solicitação
  2. Usar SecretKey para gerar uma assinatura via algoritmo de criptografia e armazená-la no cabeçalho X-Signature.
  3. Adicionar X-Timestamp, X-Nonce, X-AccessKey e X-Signature aos cabeçalhos da solicitação e enviar.

Processo de Verificação do Lado do Servidor

  1. Verificar Carimbo de Tempo: Verificar se está dentro do período de validade (por exemplo, ±5 minutos).
  2. Verificar Nonce: Verificar se já existe (para prevenir solicitações duplicadas, pode ser armazenado em cache com carimbos de tempo).
  3. Verificar Assinatura: Encontrar a SecretKey correspondente via AccessKey, regenerar a assinatura usando o mesmo algoritmo e compará-la com X-Signature.
  4. Tratamento do Resultado: Se todas as verificações passarem, executar a lógica da solicitação; caso contrário, retornar erros 401 Unauthorized ou 403 Forbidden.

Resumo das Vantagens do Mecanismo

FunçãoMétodo de Implementação
AutenticaçãoAccessKey identifica a identidade do cliente, Signature verifica se o cliente possui uma SecretKey válida.
Proteção contra Adulteração de DadosAssinatura vincula-se ao conteúdo da solicitação (método, caminho, parâmetros, etc.), qualquer modificação fará com que a verificação da assinatura falhe.
Contra Ataques de RepetiçãoTimestamp garante atualidade, Nonce garante singularidade da solicitação, mecanismos duplos rejeitam solicitações duplicadas/expiradas.
Não RepúdioAssinatura pode rastrear a origem da solicitação, clientes não podem negar ter iniciado solicitações legítimas.

toolsetlink@163.com