Maison >développement back-end >tutoriel php >Comment mettre en œuvre un système occasionnel pour sauvegarder l'intégrité du site Web et éviter la duplication des demandes ?
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); }En mettant en œuvre ce système de nonce, le site Web peut efficacement empêcher la duplication des demandes et maintenir l'intégrité du système de notation.
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!