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 03/08/2006, 18h59   #1
Membre du Club
 
Inscription : octobre 2005
Messages : 248
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 248
Points : 63
Points : 63
Par défaut [Sécurité] Gérer les droits Admin/Simple users/Personnes externes

Bonjour à tous!

Ma question se porte sur quelque chose d'assez général. Je crée un intranet (qui fait aussi office d'extranet) en PHP et j'utilise une base MySQL de EasyPHP et j'ai donc plusieurs TYPES d'utilisateurs : admin, userA, userB, userC, userD...

Chacun de ces types ont des droits différents et se logge avec un pseudo et un mot de passe.
J'ai commencé par la partie administrateur (je ne sais pas si j'ai bien fait) qui a tous les droits (créer, modifer, supprimer des tables).
Les types d'utilisateurs UserA, B, C, etc. ont des droits restreints sur la base, différents les uns des autres. En fait ils peuvent voir certaines pages de l'intranet, et ont des droits limités sur celles-ci.

J'aurais trois questions :
- Comment faire l'aiguillage des utilisateur à la connection?
- Pour les pages affichés, vaudrait-il mieux que je refasse chaque page pour chaque type d'utilisateur, ou bien je garde la même page et que je fasse des test à chaque fois pour savoir si telle ou telle partie sera visible, ou bien tel ou tel bouton sera disponible?
- Pour la sécurité, comment gérer cela?

C'est assez généraliste comme question, mais il existe des tas d'intranet, donc je suppose qu'on ne réinvente pas la roue à chaque fois... Donc quelle est la démarche type pour ce genre de situation?

Merci à vous
dessinateurttuyen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 08h12   #2
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
A la connection tu mets le niveau de sécurité/D'accès de l'utilisateur (suivant comment tu l'as défini : texte, chiffre etc.) dans une variable de session.

Ensuite suivant cette session tu génères un menu qui ne contiendra que les pages associées au niveau de sécurité, et pour renforcer le tout (au cas ou des petits malins connaitraient le nom des pages) sur chaque page tu commences par une fonction qui redirige ailleurs si le niveau de sécurité de la page qu'il cherche à afficher est inférieur à celui dans la session.

J'espére avoir été assez clair et que ça te permettra de commencer à mettre en place ton système
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 10h08   #3
Membre du Club
 
Inscription : octobre 2005
Messages : 248
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 248
Points : 63
Points : 63
Oki d'acki, j'ai saisi l'algo Merci beaucoup!

Par contre le truc c'est que l'admin voit les mêmes pages que des utilisateurs normaux, mais avec des droits différents sur cette page. Ex : le bouton "modifier table" ne sera visible que par l'admin, etc.

Alors à votre avis (je m'adresse à tout le monde) est ce qu'il faut que je crée plusieurs version d'une même page (une pour l'admin où il y aura le bouton "modifier table" et une pour le simple utilisateur sans ledit bouton) ou bien une seule page mais en faisant un test pour l'affichage du bouton ou non.

Sachant qu'il y a des TAS de différences, donc un test à chaque fois c'est pas terrible non plus, et que c'est pas très sécurisant (il suffit que le test foire pour X raison...)
dessinateurttuyen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 10h21   #4
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
Si vraiment les différences sont énooooooormes entre les pages à la limite fait 1 page par type d'utilisateur mais tu vas en ch*** si tu dois modifier 15 fois tel bout de texte ou tel autre truc en dur sur chaque page.

Si j'étais toi je ferai une petit fonction toute bête (jte file l'algo)

Code :
1
2
3
4
5
6
fonction verif_droits(droit_requis, droit_utilisateur,compostant)
{
     si droit_requis <= droit_utilisateur
      renvoyer vrai
     sinon renvoyer faux
}
Et dans ta page avant d'afficher un bouton par exemple
Code :
si verif_droit(admin,visiteur) afficher bouton_admin sinon afficher bouton_visiteur
PS: si tu fais bien ton test ya aucune raison qu'il foire
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 14h10   #5
Membre du Club
 
Inscription : octobre 2005
Messages : 248
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 248
Points : 63
Points : 63
Oki d'ack Merci pour l'algo!
dessinateurttuyen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2006, 09h37   #6
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
De rien
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h58.


 
 
 
 
Partenaires

Hébergement Web