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 :

sécurité compte admin et user


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Points : 37
    Points
    37
    Par défaut sécurité compte admin et user
    Bonjour à tous !

    Je suis en train de développer un site en php, et j'ai une question sur la sécurité (histoire que je me retrouve pas avec des failles partout).

    Le site doit pouvoir accueillir deux types de personne : les utilisateurs lambdas, et les admins. Bien évidemment, ils n'ont pas la même interface ni les mêmes droits.

    Du coup, dans mon fichier checklogin.php, je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    while ($row = pg_fetch_array($result)) {
    	 if (check_password($pwd, $row[0]))
    		{		
    			$_SESSION['myusername']=$login;	
    			$_SESSION['rights']=$row[1];
    		}
    	}
     
    	if($_SESSION['rights']==0)
    	{
    		header("location:../indexadmin.php");
    	}
    	else if($_SESSION['rights']==1)	
    	{	
    		header("location:../indexuser.php");
    	}
    Je récupère dans ma base postgresql le champ "rights", si il vaut 0, c'est un admin, s'il vaut 1, c'est un user.

    C'est ensuite que ça se complique. Sur ma page indexadmin.php je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    session_start();
    if(!isset($_SESSION['myusername'])){
    header("location:login.php");
    }
    if($_SESSION['rights'] !=0){
    header("location:error.php");
    }
    ?>
    Comme j'ai rempli ma variable de session rights au moment du check, en extrayant la valeur de ma base de donnée, l'utilisateur doit être rejeté s'il n'a pas un rights=0. Mais est-il possible pour un attaquant de contourner ça, et de changer la variable de session ? Je précise que je ne touche pas à cette variable là à d'autres endroits, seulement dans le checklogin, et donc à cet endroit là pour vérifier la valeur dedans.

  2. #2
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Salut

    Déjà, utiliser les sessions plutôt que des variables passées en GET est plus sécurisant, c'est un fait.
    Ensuite, si tes variables de sessions sont banales telles que " 0, 1, 2, etc...", ce n'est pas trop séduisant.

    Tu pourrais, par exemple compliquer un peu plus les choses.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if($_SESSION['rights']==0)
    	{
    	$_SESSION['verif_0']='ASvrTfdERsZ_4';	
                  header("location:../indexadmin.php");
    	}
    	else if($_SESSION['rights']==1)	
    	{	
                  $_SESSION['verif_1']='gTYhKiTt_6';		
                  header("location:../indexuser.php");
    	}
    Et ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($_SESSION['verif_0'] !='ASvrTfdERsZ_4'){
    header("location:error.php");
    }
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Points : 37
    Points
    37
    Par défaut
    L'idée c'est de mettre une valeur "password", qu'un attaquant ne pourra pas deviner, même par brute force, c'est ça ? Il n'y a pas moyen qu'un utilisateur non autorisé connaisse cette valeur de session, si ? En tout cas j'apprécie, je pense faire comme ça.

  4. #4
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par cyscek Voir le message
    Il n'y a pas moyen qu'un utilisateur non autorisé connaisse cette valeur de session, si ?
    En fait, celui qui parvient à "intercepter" intentionnellement un ID de session peut prendre connaîssance des différentes variables de session qui lui sont associées.

    => 1 ID de session = Nombre X de variables de sessions.

    A défaut, si l'id de session est introuvable ou indétectable, ses différentes variables de session le composant le sont également... si tant est qu'elles ne soient pas trop faciles à extrapoler.

    C'est juste pour cette raison que j'attirais ton attention sur le fait que la banalisation de certaines variables comme 0,1,2 ne renforcait pas la sécurité.
    Bref, je trouvais celà un peu dommage.

    A part celà, ton script ( dans la forme) est cohérent.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

Discussions similaires

  1. Compte admin disparu même sous Users
    Par zimoun dans le forum Mac OS X
    Réponses: 11
    Dernier message: 16/04/2010, 19h15
  2. Sécurité Admin VS user
    Par Truelove dans le forum Sécurité
    Réponses: 20
    Dernier message: 13/08/2007, 22h25
  3. [Sécurité] Sécurité : gestion des comptes admin
    Par ChriGoLioNaDor dans le forum Langage
    Réponses: 4
    Dernier message: 13/03/2007, 19h37
  4. [Sécurité] Gérer les droits Admin/Simple users/Personnes externes
    Par dessinateurttuyen dans le forum Langage
    Réponses: 5
    Dernier message: 16/08/2006, 09h37
  5. Réponses: 1
    Dernier message: 28/10/2005, 12h13

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