Comment Nonces peut-il sécuriser les requêtes Web contre les attaques par relecture ?

Susan Sarandon
Libérer: 2024-11-16 02:53:02
original
302 Les gens l'ont consulté

How Can Nonces Secure Web Requests Against Replay Attacks?

Comment sécuriser les requêtes Web avec des nonces

Problème

Un utilisateur a trouvé un moyen d'exploiter le système de validation des requêtes du système de notation d'un site Web en dupliquer des requêtes HTTP de grande valeur. Cela compromet l'intégrité et la fiabilité du système.

Solution : Implémentation d'un système de nonce

Les nonces (numéro utilisé une fois) sont des valeurs qui empêchent les attaques par réexécution de requête en garantissant qu'une requête particulière n'a pas été fait auparavant. Voici un moyen courant et sécurisé d'implémenter un système de noms occasionnels :

Génération et vérification de noms occasionnels côté serveur

Fonction getNonce()

  • Identifie le client qui fait la demande (par exemple, par nom d'utilisateur, session).
  • Génère un nom occasionnel aléatoire à l'aide d'une fonction de hachage sécurisée (par exemple, SHA512).
  • Stocke le nom occasionnel dans une base de données associée à l'ID du client.
  • Renvoie le nom occasionnel au client.

Fonction verifyNonce()

  • Récupère le nom occasionnel précédemment stocké pour l'ID client.
  • Supprime le nom occasionnel de la base de données (pour empêcher sa réutilisation).
  • Génère un hachage avec le nom occasionnel fourni par le client (cnonce), les données de la demande et un sel secret.
  • Compare le hachage généré au hachage fourni par le client.
  • Renvoie vrai si les hachages correspondent, indiquant un nom occasionnel valide.

Client -Side Nonce Usage

Fonction sendData()

  • Récupère le nonce du serveur à l'aide de la fonction getNonce().
  • Génère un Nom occasionnel spécifique au client (cnonce) à l'aide d'une fonction de hachage sécurisée.
  • Concatène le nom occasionnel du serveur, le nom occasionnel du client et les données de la demande.
  • Génère un hachage à partir de la valeur concaténée.
  • Envoie la requête au serveur, y compris les données, la connexion et le hachage.

Considérations de sécurité

  • Génération de noms aléatoires : Le makeRandomString( ) doit générer des nombres aléatoires très imprévisibles pour améliorer la sécurité.
  • Fonction de hachage sécurisée : Utilisez une fonction de hachage puissante comme SHA512 ou bcrypt pour les calculs de hachage non liés.
  • À usage unique par demande : Les noms occasionnels ne doivent être utilisés qu'une seule fois et supprimés du stockage pour empêcher les attaques par relecture.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal