IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comment éviter la modification et le visionnage d'un autre enregistrement de données


Sujet :

Langage PHP

  1. #1
    Lucas Panny
    Invité(e)
    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?

  2. #2
    Membre régulier Avatar de daheda
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 81
    Points : 109
    Points
    109
    Par défaut
    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

  3. #3
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    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.

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    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

Discussions similaires

  1. Comment éviter la modification de l'interlignage ?
    Par Mister Paul dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 05/12/2012, 17h03
  2. Réponses: 2
    Dernier message: 01/12/2008, 18h43
  3. [firebird] comment valider les modifications ?
    Par kase74 dans le forum Bases de données
    Réponses: 2
    Dernier message: 24/08/2004, 01h13
  4. Réponses: 4
    Dernier message: 28/07/2004, 10h42
  5. [eclipse 2.1][compilation] Comment éviter...
    Par ftrifiro dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 29/06/2004, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo