Essayer de rendre votre service apatride est un objectif valable. Le fait d'avoir des ID de commande dans les chaînes de requête est "sûr" mais cela dépend de beaucoup de choses. Les principales choses que vous pourriez avoir besoin à vous soucier sont:
- utilisateurs à modifier leur numéro de commande
- ID d'ordre « fuite » à des tiers
- ID d'ordre étant prédits par des tiers
Je dis "peut" parce que les choses dont vous avez réellement besoin de vous inquiéter dépendent des détails de votre système. Quelles sont les conséquences de ces choses qui se passent? Selon les détails de votre système, ils peuvent être inoffensifs ou très graves.
Le problème le plus simple à résoudre est le problème de "fuite". Utilisez HTTPS. Cela évite non seulement les «indiscrétions», mais prévient également les fuites dues aux journaux proxy et aux en-têtes Referer. Le problème de prédiction peut être résolu par cryptage (oui, en plus de HTTPS - nous ne voulons pas que l'utilisateur final déchiffre cela) l'ID de commande qui apparaît dans la chaîne de requête. De cette façon, quelqu'un ne peut pas simplement incrémenter/décrémenter la chaîne de requête pour trouver un autre identifiant de commande. (Cela empêche également les utilisateurs de déterminer facilement le nombre total de commandes dans votre système, ce qui peut être souhaitable.)
Vous pouvez résoudre le problème de l'utilisateur qui modifie son ID de commande en enregistrant à qui appartient une ID de commande lorsque il est d'abord affecté, ou en incluant une signature sécurisée de la paire (user, orderid) en tant que paramètre de requête. Ensuite, un utilisateur peut seulement changer son identifiant de commande pour celui qu'il possède déjà, ce qui l'empêche au moins de se plier aux ordres de quelqu'un d'autre.Si vous faites cela, vous n'avez probablement pas besoin de crypter les ID de commande, sauf si vous voulez empêcher les utilisateurs de savoir combien de commandes existent.
Voici quelques idées. Lesquels de ceux-ci s'appliquent à votre système dépendent des facteurs que j'ai mentionnés plus tôt.
vous pouvez appeler quelque chose clé autre que orderid, sortOrder ou cheeseQuality peut-être. Les pirates ne sauraient jamais où chercher! :) – Jason