Bonjour,
Alors je développe une application "bancaire" avec une interface graphique.
J'ai cependant un gros problème d'architecture je pense.
En fait j'ai donc la classe Banque qui fait tous les traitements et les opérations. Cette Banque contient une liste de Client et ces Client contiennent une liste de CompteBancaire.
Le problème est que je n'arrive pas à savoir où faire les opérations d'un point de vue sécurité.
Mon GUI demande un login/password ou de créer un compte. A la création du compte on créée en fait un Client qui stocke les deux attributs login et le hash du mot de passe de façon sécurisée dans ses attributs.
Par contre la question est que si par exemple la Banque contient déjà plusieurs Client et que l'on se connecte via le GUI avec une paire login/mdp, qui doit faire les opérations bancaires (retrait, crédit) ? Car la Banque ne connait pas le login, elle n'a que la liste des Client donc elle doit toujours parcourir avec une boucle la liste des Client jusqu'a trouver celui qui a le même login et à partir de là c'est une méthode de Client qui vérifie si le password est bon.
Déjà je trouve ça vraiment lourd mais en plus le GUI contient une instance de la Banque donc même si on a une vérification du login/mdp au départ, on peut appeler toutes les méthode de banque et il n'y a pas vraiment de sécurité. J'appelle juste la méthode de Client pour vérifier si le mot de passe est bon mais je pourrais très bien appeler toutes les méthodes sans faire de vérification.
Quelle est la solution ? Demander le mot de passe en attribut de chaque méthode de type bancaire ? Et donc revérifier le hash à chaque opération ?
J'ai besoin de vos avis car j'ai vraiment l'impression de louper quelque chose là.
Partager