Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/09/2011, 08h31   #1
Lucas Panny
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut Comment éviter la modification et le visionnage d'un autre enregistrement de données

Bonjour,

Cette question concerne le développement web en général mais je la pose ici car mon domaine c'est le PHP et je cherche une solution PHP.
Voici le cas:
Dans les formulaires des panneaux d'administration de sites web, pour la modification et suppression d'un enregistrement de données (le compte d'un utilisateur, les commandes, etc), il nous faut en général l'ID de l'enregistrer à modifier ou à supprimer.
Or souvent, l'accès aux panneaux est soumis à des privilèges du genre: consultation seulement ou on n'a le droit de modifier que certains enregistrements ou ... Avant que le code PHP sache de quel enregistrement modifier après la soumission d'un POST, il y a souvent un <input type="hidden" value="XXX" /> pour contenir l'ID de l'enregistrement.

C'est dangereux car il suffirait de changer value par hasard et l'enregistrement correspond est détruit! Souvent aussi l'URL de suppression est facile à deviner du genre delete.php?user_id=XXXX, donc il suffit de faire appel et changer user_id!

Comment les grands sites comme facebook font pour éviter que je modifie le profil d'un autre utilisateur par exemple?
  Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 11h35   #2
Membre régulier
 
Avatar de daheda
 
Homme Dah Andri.
Développeur Web
Inscription : août 2006
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Dah Andri.
Localisation : Ile Maurice

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 79
Points : 77
Points : 77
Envoyer un message via Yahoo à daheda Envoyer un message via Skype™ à daheda
Pour le compte de Facebook je ne sais pas, mais il fut un temps où je devais faire un truc pareil...
On faisait une validation de hash: on attribut un hash-code à chaque session ou ou un ID dont on recalcule après
daheda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 15h38   #3
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Salut,
Ce que je fais généralement sur chaque projet avec un cas similaire.

Je vérifie les droits sur chaque page. Par exemple pour la suppression d'un utilisateur, je vérifie les points suivants :
  • L’utilisateur est connecté
  • L'utilisateur est bien un admin.

Si l'utilisateur peut supprimer certaines données (par exemple ses objets en vente). Je vérifie que l'objet appartient bien à l'utilisateur ( ou qu'il soit admin ) pour le supprimer.

Ça c'est pour une gestion simplifiée. Sinon pour gérer plusieurs profils et gérer l'accès à une page par rapport au profil de l'utilisateur.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 18h53   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Il faut implémenter une gestion de droits: un utilisateur n'a le droit de modifier que les données qui le concerne. C'est relativement simple à mettre en place avec un SGBD relationnel vu que, logiquement, toutes les informations de l'utilisateur sont liées avec l'utilisateur en question.

Pour une gestion plus poussée des droits, utilise une logique d'ACL: http://en.wikipedia.org/wiki/Access_control_list
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h28.


 
 
 
 
Partenaires

Hébergement Web