Utilisation de noms occasionnels pour améliorer la sécurité dans les applications Web
En réponse à une préoccupation soulevée par un utilisateur concernant plusieurs soumissions de la même requête HTTP pour à des fins de notation, une solution non basée a été proposée. Les noms occasionnels sont des valeurs uniques qui peuvent être utilisées pour empêcher les attaques par relecture et garantir l'intégrité des données.
Pour implémenter un nom occasionnel system :
Côté serveur
-
getNonce() :
- Identifie le client demandant le nom occasionnel.
- Génère un nom occasionnel aléatoire à l'aide d'une fonction de hachage sécurisée (par exemple, SHA-512).
- Stocke le nom occasionnel associé à la demande du client.
- Renvoie le nom occasionnel au client.
-
verifyNonce() :
- Identifie le client demandant la vérification.
- Récupère le Nom occasionnel précédemment stocké pour ce client.
- Calcule un hachage du nom occasionnel, un contre-nonce généré par le client (cnonce) et les données à vérifier.
- Compare le hachage calculé à celui fourni par le client.
- Renvoie vrai si les hachages correspondent, indiquant un valide demande.
Côté client
-
sendData() :
- Obtient un nom occasionnel du serveur en utilisant getNonce() méthode.
- Génère une annonce à l'aide d'une fonction de hachage sécurisée.
- Calcule un hachage de l'annonce, de l'annonce et des données à envoyer.
- Envoie les données, l'annonce, et du hachage au serveur.
-
makeRandomString() :
- Renvoie une chaîne ou un nombre aléatoire.
- A une implémentation sécurisée utiliserait un caractère aléatoire de haute qualité, tel que celui fourni par la fonction mt_rand() dans PHP.
- La fonction de hachage utilisée dans le calcul doit être la même côté serveur et côté client.
En utilisant des noms occasionnels, vous pouvez empêcher la relecture attaques en s’assurant que chaque demande est unique et n’a pas été soumise auparavant. Cela garantit l'intégrité de votre système de notation et vous protège contre les tentatives malveillantes visant à obtenir un avantage injuste.
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!