Bonsoir,

Je travail sur un projet CakePHP en ce moment et je viens de me rendre compte qu'un utilisateur <A> peut modifier ou supprimer les données d'un utilisateur <B> s'il essaye de faire joujou avec mes controlleurs. J'ai donc exécuter des requêtes et des tests à chaque action sur la base de données afin d'être sur que ces données appartient à cette utilisateur mais cette méthode est vraiment pénible et utilise beaucoup de requêtes.

Je voudrai donc savoir s'il existe une solution meilleur pour ce problème, comme l'ACL par exemple mais pour les données.

5 réponses


Est ce que avec les sessions cela ne pourrait pas fonctionner. Un utilisateur ne peut modifier que les données de sa session ?
Je débute dans cakephp donc je donne des idées au cas où

Pas le choix faut tester que tel ou tel contenu appartienne à l'utilisateur à chaque fois. Tu peux créer une fonction "canEdit" dans tes models pour alléger un peu tes controller.

Eski
Auteur

@Jazzbass : Non la seul table qui se trouve dans la session c'est la table users. Je voudrai que l'utilisateur peut modifier seulement ses données qui se trouve dans la base de données.

@Grafikart : J'ai trouvé sur le net que les développeurs utilisent les before pour ce problème.

En fait je voudrai aussi savoir à peu prét le nombre de requêtes et le temps d’exécution normal d'une application moyenne de CakePHP

Eski probablement en spécifiant les champs lors du save et en vérifiant avec un beforeSave et beforeDelete que l'id de l'owner est celui de l'utilisateur,ça devrait passer sans trop de pb.

Pour connaitre le nb de requete et le temps d'execution un petit

echo $this->element('sql_dump');

Salut Eski,

je suis plutôt d'accord avec thqloz, je ferais un beforeSave() vérifiant que l'id du $_SESSION correspond bien à l' id de l'enregistrement à modifier.

++