"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puede Nonces proteger las solicitudes web contra ataques de repetición?

¿Cómo puede Nonces proteger las solicitudes web contra ataques de repetición?

Publicado el 2024-11-16
Navegar:241

How Can Nonces Secure Web Requests Against Replay Attacks?

Cómo proteger las solicitudes web con Nonces

Problema

Un usuario ha encontrado una manera de explotar el sistema de validación de solicitudes del sistema de puntuación de un sitio web al duplicar solicitudes HTTP de alto valor. Esto compromete la integridad y confiabilidad del sistema.

Solución: implementar un sistema Nonce

Los nonces (número usado una vez) son valores que evitan ataques de repetición de solicitudes al garantizar que una solicitud en particular no haya sido hecho antes. A continuación se muestra una forma común y segura de implementar un sistema nonce:

Generación y verificación de Nonce en el lado del servidor

Función getNonce()

  • Identifica al cliente que realiza la solicitud (por ejemplo, por nombre de usuario, sesión).
  • Genera un nonce aleatorio usando una función hash segura (por ejemplo, SHA512).
  • Almacena el nonce en una base de datos asociada con el ID del cliente.
  • Devuelve el nonce al cliente.

función verificarNonce()

  • Recupera el nonce previamente almacenado para el ID del cliente.
  • Elimina el nonce de la base de datos (para evitar que se reutilice).
  • Genera un hash con el nonce proporcionado por el cliente (cnonce), los datos de la solicitud y una sal secreta.
  • Compara el hash generado con el hash proporcionado por el cliente.
  • Devuelve verdadero si los hashes coinciden, lo que indica un nonce válido.

Cliente -Uso lateral de Nonce

Función sendData()

  • Recupera el nonce del servidor usando la función getNonce().
  • Genera un nonce específico del cliente (cnonce) usando una función hash segura.
  • Concatena el nonce del servidor, el nonce del cliente y los datos de solicitud.
  • Genera un hash a partir del valor concatenado.
  • Envía la solicitud al servidor, incluidos los datos, cnonce y hash.

Consideraciones de seguridad

  • Generación aleatoria nonce: makeRandomString( ) debe generar números aleatorios altamente impredecibles para mejorar la seguridad.
  • Función Hash segura: Utilice una función hash sólida como SHA512 o bcrypt para cálculos hash no relacionados.
  • Uso único por solicitud: Nonces solo debe usarse una vez y eliminarse del almacenamiento para evitar ataques de repetición.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3