Je construis une application de commerce électronique. Chemin de la commande ressemble à /Orders/Details/{orderId}
. Cependant, je ne veux pas exposer orderId à l'utilisateur final. Comment puis-je identifier l'ordre sans utiliser l'identificateur de base de données? Est-il nécessaire de générer une chaîne unique aléatoire comme GUID?cacher réel ID sur l'entité de l'utilisateur final
Répondre
Vous auriez besoin d'affecter à l'entité un autre identificateur que vous ne voyiez pas les utilisateurs (une sorte de clé alternative).
Vous pouvez également utiliser des ID chiffrés ou obfusqués et demander à votre application de gérer le déchiffrement ou la désobfuscation.
Vous pouvez envoyer une valeur à la page de commande/détails, et envoyer l'ID de commande de cette façon. Vous pouvez également avoir une autre chaîne unique pour les commandes et l'utiliser à la place, en fonction de la façon dont vous stockez les données et pourquoi vous souhaitez masquer l'ID de commande.
Vous êtes sur la bonne voie - en utilisant un nombre entier car l'ordre de commande peut mener à une attaque de navigation forcée. Peut être que vous pouvez utiliser un GUID comme clé primaire dans votre base de données.
Il peut être difficile d'utiliser GUID dans l'URL – kilonet
Il est important de noter que vous ne devez pas vous fier * uniquement * à une telle 'obfuscation'; vous devez toujours vous assurer que les utilisateurs non autorisés ne peuvent rien faire de malfaisant en connaissant simplement l'identité d'une entité. – Cocowalla
Je pense que cela aiderait à comprendre vos motivations derrière vouloir le faire? – Cocowalla
l'utilisateur fait une commande, il la voit id - 1000 par exemple, le lendemain il fait une autre commande et l'identifiant de la nouvelle commande est 1050 - maintenant l'utilisateur sait que j'ai 50 commandes pour une journée - je ne veux pas qu'il le sache. – kilonet
Ensuite, je voudrais aller avec la première option dans ma réponse, et en ajoutant une autre clé. Cela pourrait être un hachage de l'ID de la commande réelle, ou juste un nombre aléatoire que vous générez. Tout ce que vous aimez est unique et vous êtes heureux de montrer aux clients. – Cocowalla