Nous construisons une application Android et l'une de ses caractéristiques est de réserver une cabine de fournisseur de services de taxi (par exemple un Uber).Comment vous assurer que seul l'utilisateur autorisé peut accéder à une fonctionnalité fournie par le serveur?
Nous avons un ID utilisateur spécifique à l'application. Appelons-le AUID. Pour réserver la cabine, l'application affichera une demande au serveur et enverra AUID avec d'autres informations pertinentes (comme lat, long etc). Comment puis-je m'assurer à la fin du serveur que la requête provient bien du bon utilisateur et qu'il est possible de réserver le taxi en toute sécurité? Dans le formulaire actuel, si un tiers apprend à connaître l'AUID d'une autre personne, le tiers peut réserver un taxi au nom de cette personne.
L'une des solutions auxquelles je pensais était l'utilisation du chiffrement asymétrique. L'application contiendrait la clé publique et le serveur contiendrait la clé privée. Au lieu d'envoyer l'ID utilisateur au serveur, nous envoyons à la place une clé cryptée où la clé serait AUID + horodatée cryptée à l'aide de la clé publique. Nous décrypterons ensuite le message en utilisant la clé privée à la fin du serveur pour obtenir l'AUID. Si l'horodatage du serveur ne se trouve pas dans un certain intervalle du timestamp envoyé par le client, nous rejetons la demande.
Est-ce une approche suffisamment sûre? Existe-t-il d'autres pratiques largement suivies pour de tels scénarios?
vous ne pouvez pas contrôler le client. Si quelqu'un veut assez ce type d'utilisateur, il peut rooter le téléphone et lancer un débogueur contre votre application. utiliser https. essayez un peu d'obscurcissement. c'est le meilleur que vous pouvez faire –