Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
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 09/04/2007, 12h53   #1
Membre du Club
 
Inscription : août 2005
Messages : 171
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 171
Points : 40
Points : 40
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!
ChriGoLioNaDor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2007, 13h41   #2
Membre à l'essai
 
Inscription : avril 2007
Messages : 40
Détails du profil
Informations personnelles :
Âge : 21

Informations forums :
Inscription : avril 2007
Messages : 40
Points : 21
Points : 21
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 :
SELECT * FROM membre_info WHERE id_membre = "'.$_SESSION['id'].'"
Puis donc tu récupere le grade et tu peux un

Code :
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 ^^'
Ajite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2007, 13h58   #3
Membre du Club
 
Inscription : août 2005
Messages : 171
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 171
Points : 40
Points : 40
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
ChriGoLioNaDor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2007, 14h05   #4
Membre à l'essai
 
Inscription : avril 2007
Messages : 40
Détails du profil
Informations personnelles :
Âge : 21

Informations forums :
Inscription : avril 2007
Messages : 40
Points : 21
Points : 21
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)
Ajite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2007, 16h09   #5
Membre du Club
 
Inscription : août 2005
Messages : 171
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 171
Points : 40
Points : 40
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
ChriGoLioNaDor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2007, 16h17   #6
Membre à l'essai
 
Inscription : avril 2007
Messages : 40
Détails du profil
Informations personnelles :
Âge : 21

Informations forums :
Inscription : avril 2007
Messages : 40
Points : 21
Points : 21
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 !
Ajite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2007, 16h53   #7
Membre du Club
 
Inscription : août 2005
Messages : 171
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 171
Points : 40
Points : 40
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
ChriGoLioNaDor 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 09h52.


 
 
 
 
Partenaires

Hébergement Web