Problème :
Le système de notation d'un site Web, qui utilise le hachage pour garantir L'intégrité des requêtes HTTP est exploitée via la duplication de requêtes. Les attaquants obtiennent des scores élevés et reproduisent les détails de la demande pour manipuler le système.
Solution nonce :
Pour lutter contre cette attaque, il est prudent de mettre en œuvre un système nonce. Les noms occasionnels (numéro utilisé une fois) fournissent une valeur unique pour chaque demande, empêchant la réutilisation de la même demande.
Moyen commun et sécurisé de configurer un système de noms occasionnels :
Fonctions côté serveur :
Fonctions côté client :
Détails de mise en œuvre :
Exemple de système de nonce :
// Server-Side getNonce() { $id = identifyRequest(); $nonce = hash('sha512', makeRandomString()); storeNonce($id, $nonce); return $nonce; } verifyNonce($data, $cnonce, $hash) { $id = identifyRequest(); $nonce = getNonce($id); removeNonce($id, $nonce); $testHash = hash('sha512', $nonce . $cnonce . $data); return $testHash == $hash; } // Client-Side sendData($data) { $nonce = getNonceFromServer(); $cnonce = hash('sha512', makeRandomString()); $hash = hash('sha512', $nonce . $cnonce . $data); $args = ['data' => $data, 'cnonce' => $cnonce, 'hash' => $hash]; sendDataToClient($args); }
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!