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 :

[Cookies] Utiliser une variable de session pour vérifier l'identification d'un admin


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut [Cookies] Utiliser une variable de session pour vérifier l'identification d'un admin
    Bonjour,

    Je fais des sites en php5, et j'ai un module permettant aux administrateurs de s'identifier, et d'avoir accès aux pages d'administration.

    Cependant, je pouvant raisonnablement pas demander à mes utilisateurs de saisir à nouveau leurs identifiants à chaque changement de page, j'utilise pour le moment une variable de session : $_SESSION['admin_pseudo']. A chaque chargement de page, si cette variable existe, je considère que la personne a les droit d'admin, sinon juste les droits d'utilisateur lambda.

    Ma question est de savoir s'il est possible de "pirater" une variable de session comme celle-ci, afin par exemple de lui assigner une valeur (et ainsi de se faire passer pour un admin), sans avoir accès à la BDD ou au serveur FTP.

    Dans ce cas, comment faire pour identifier de façon certaine (ou presque) un admin? utiliser un cookie? Non, ça je sais que c'est encore pire. Vérifier si le nom d'admin existe bien dans la BDD à chaque chargement de page? J'ai peur que ça n'apporte pas grand chose (il est souvent facile de trouver le pseudo de l'admin, surtout s'il l'utilise comme pseudo sur son site), et consomme une requête juste pour cela. S'identifier à chaque page? Bien trop contraignant... Enregistrer en session le mot de passe en plus du pseudo? Je doute que ce soit une bonne chose de faire transiter 36 fois le mot de passe, même crypté... Bref, avez-vous des idées?

    Merci d'avance pour vos conseils!

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Pourquoi une variable $_SESSION['admin_pseudo'] ? Il faut gérer tes membres par leur ID !!!
    Tout simplement tu crées une table membre et une table membre_info par exemple... Dans la table membre tu stock le l'id , le pseudo, le mdp le mail par exemple... Et dans ta table membre_info tu stock un id un id_membre son grade etc...
    Tu fais une requete sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM membre_info WHERE id_membre = "'.$_SESSION['id'].'"
    Puis donc tu récupere le grade et tu peux un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($exemple['grade'] == "Admin")
    {
      echo 'Bienvenue sur l\'espace admin';
    }
    Tu peux aussi trier tes grades par id et rechercher le nom du grade dans une table grade.

    Je trouve que gérer par des nombres c'est plus facile... Pour d'éventuelle modifications...

    ps: je te dis cela mais je débute en php je commence à peine la poo ... Donc bon j'espère ne pas avoir dis de bétises ^^'

  3. #3
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Merci de ta réponse.

    Je n'utilise pas les id, car je sais que pour ce qui est des cookies, c'est le pire à faire : si quelqu'un veux avoir accès à l'administration, il lui suffit d'éditer ton cookie, en insérant une valeur dans ta variable nommée "admin_id" (les id étant souvent générées automatiquement, il n'est pas difficile de trouver un id existant).

    Avec le pseudo, si l'administrateur a un pseudo tordu (et qu'il ne l'utilise pas ailleurs), il serait plus difficile de le trouver. Mais bon, tout cela s'appuie sur l'hypothèse qu'il est possible de modifier le contenu d'un $_SESSION de l'extérieur, et là justement c'est le sujet de mon post


    PS : je sépare aussi mes tables admin et membre, afin d'alléger un peu mes requêtes SQL : inutile de chercher un admin dans une table de 5000 entrées, alors qu'il n'y a que 2 admin, par exemple

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Je ne suis pas du tout d'accord avec c'que tu viens d'écrire
    Les sessions sont stockés sur le serveur ! Contrairement au cookie qui sont stockés sur le disque de l'utilisateur... Trier avec un id est donc mieux !

    Plus d'info sur la différence session/cookie ici : http://php.developpez.com/cours/sessions/?page=intro

    (enfin je crois T_T)

  5. #5
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Sur le principe, je suis 100% d'accord avec toi, sur le fait qu'il est plus logique de stocker un identifiant (moins volumineux, forcément unique, plus pratique pour faire une recherche dans une BDD), et je connais la différence entre cookie et session (c'est pour cela que j'utilise les sessions).

    Mais peux-tu m'affirmer de façon certaine que les données contenues dans une session ne peuvent pas être trafiquées, et qu'on peux se fier à elle à coup sûr? Si ta réponse est oui, no problème, je passe un identifiant dans ma session et mon sujet est clos. Mais pour le moment j'ai un doute, et c'est pour cela que je pose ma question ici, où des personnes bien plus expérimentées que moi connaissent probablement la réponse

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par ChriGoLioNaDor
    Mais peux-tu m'affirmer de façon certaine que les données contenues dans une session ne peuvent pas être trafiquées, et qu'on peux se fier à elle à coup sûr?
    Je n'affirme rien du tout... Je pense que l'on peu toujours trouvé une faille ! Mais je ne pense pas que l'on puisse trafiquer une session comme cela ^^! En même temps en hack pirate et autres chose je ne m'y connais pas du tout !

  7. #7
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Donc en gros on en est au même point Et comptant utiliser mon module sur plusieurs sites, dont des sites commerciaux, j'aimerais en savoir un peu plus avant de mettre tout cela en place

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/05/2008, 12h51
  2. Réponses: 3
    Dernier message: 09/01/2007, 10h44
  3. Utiliser une variable pour stocker les noms d'objets.
    Par en_gel_ho dans le forum Access
    Réponses: 4
    Dernier message: 03/01/2007, 17h44
  4. [WebForms]Comment utiliser une variable de session depuis JavaScript ?
    Par ThunderBib dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 05/05/2006, 15h01
  5. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 14h58

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