"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment Nonces peut-il sécuriser les requêtes Web contre les attaques par relecture ?

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

Publié le 2024-11-16
Parcourir:808

How Can Nonces Secure Web Requests Against Replay Attacks?

Comment sécuriser les requêtes Web avec des noms occasionnels

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 (nombre 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é faite 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.

verifyNonce () Function

  • Récupère le nom occasionnel précédemment stocké pour le client ID.
  • 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 hachage valide nonce.

Utilisation du nonce côté client

sendData() Fonction

  • Récupère le nonce du serveur à l'aide de getNonce ().
  • Génère un nom occasionnel spécifique au client (cnonce) à l'aide d'un hachage sécurisé fonction.
  • 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 demande au serveur, y compris les données , cnonce et hash.

Sécurité Considérations

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

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3