"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como os Nonces podem proteger solicitações da Web contra ataques de repetição?

Como os Nonces podem proteger solicitações da Web contra ataques de repetição?

Publicado em 2024-11-16
Navegar:732

How Can Nonces Secure Web Requests Against Replay Attacks?

Como proteger solicitações da Web com Nonces

Problema

Um usuário encontrou uma maneira de explorar o sistema de validação de solicitações do sistema de pontuação de um site, duplicação de solicitações HTTP de alto valor. Isso compromete a integridade e a confiabilidade do sistema.

Solução: Implementando um Sistema Nonce

Nonces (número usado uma vez) são valores que evitam ataques de repetição de solicitação, garantindo que uma solicitação específica não foi feito antes. Esta é uma maneira comum e segura de implementar um sistema nonce:

Geração e verificação de Nonce no lado do servidor

Função getNonce()

  • Identifica o cliente que faz a solicitação (por exemplo, por nome de usuário, sessão).
  • Gera um nonce aleatório usando uma função hash segura (por exemplo, SHA512).
  • Armazena o nonce em um banco de dados associado ao ID do cliente.
  • Retorna o nonce ao cliente.

verifyNonce() Função

  • Busca o nonce armazenado anteriormente para o ID do cliente.
  • Remove o nonce do o banco de dados (para evitar que ele seja reutilizado).
  • Gera um hash com o nonce fornecido pelo cliente (cnonce), os dados da solicitação e um salt secreto.
  • Compara o hash gerado com o hash fornecido pelo cliente.
  • Retorna verdadeiro se os hashes corresponderem, indicando um Nonce válido.

Nonce do lado do cliente Uso

sendData() Função

  • Recupera o nonce do servidor usando a função getNonce().
  • Gera um específico do cliente nonce (cnonce) usando uma função hash segura.
  • Concatena o nonce do servidor, o nonce do cliente e a solicitação data.
  • Gera um hash a partir do valor concatenado.
  • Envia a solicitação ao servidor, incluindo os dados, o cnonce e o hash.

Considerações de segurança

  • Random Nonce Generation: A função makeRandomString() deve gerar números aleatórios altamente imprevisíveis para melhore a segurança.
  • Função de hash segura: Utilize uma função de hash forte como SHA512 ou bcrypt para cálculos de hash relacionados a nonce.
  • Uso único por solicitação: Nonces devem ser usados ​​apenas uma vez e removidos do armazenamento para evitar ataques de repetição.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3