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écurisation des sessions pour une section membres


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    65
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 65
    Points : 43
    Points
    43
    Par défaut sécurisation des sessions pour une section membres
    j'ai un probleme et je ne vois pas comment le resoudre.
    Mon authentification marche bien elle redirige les different type d'utilisateur vers leurs pages respective.

    mon probleme est que si l'un des utilisateur connait l'adresse de l'autre section il peut y aller sans pb.En gros,j'aimerais que les differentes sessions soit etanches.

    Merci

    CROSS

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 95
    Points
    95
    Par défaut
    Il faut définir un système de droits pour chaque utilisateur et tester avant l'affichage de la page si l'utilisateur actuel a bien les droits pour y accéder, sinon il est refoulé.

    Donne un peu plus de description parce que là c'est très vague comme explication

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    65
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    en gros je vais vous mettre mon code login.php:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?
    include"config-inc.php";
    session_start() ;
    //Connection à la BD et sélection de la base "identification"
    mysql_connect($db_host,$db_user,$db_pass) or die("Unable to connect to database");
    mysql_select_db($db_db) or die( "Unable to select database");
    //Requêtes mySQL pour établir la validation.
    if((isset($_POST['pseudo'])) && (isset($_POST['pwd']))) {
         $pseudo=$_POST['pseudo'];
    	 $pwd=$_POST['pwd'];
    }
     
    $query = " SELECT * FROM users WHERE pseudo='$pseudo' AND pwd='$pwd' ";
    //Exécution de la requête mySQL et
    //affectation du nombre de rangés valides dans la table.
    //********************************************
    $result = mysql_query($query) or die('error making query');
    $affected_rows = mysql_num_rows($result);
    //Si il y a un enregistrement, la connexion est valide sinon invalide.
    //*****************************************************
    if($affected_rows >= 1 ){
    //requete SQL me permetttant de definir les sections
    //*****************************************************
    $perso = mysql_query (" SELECT * FROM users WHERE pseudo='$pseudo'AND section='amis'");
    $admin = mysql_query (" SELECT * FROM users WHERE pseudo='$pseudo'AND section='admin'");
    $esiea = mysql_query( " SELECT * FROM users WHERE pseudo='$pseudo'AND section='esiea'");
    if($row1 = mysql_fetch_array($perso, MYSQL_NUM)){
    $_SESSION['perso'] = 'amis';
    $url = '../deuil/persoIndex.php';
    } 
    if($row2 = mysql_fetch_array($esiea, MYSQL_NUM)){
    $_SESSION['esiea'] = 'esiea';
    $url = '../esiea/esieaIndex.php';
    }
    if($row3 = mysql_fetch_array($admin, MYSQL_NUM)){
    $_SESSION['admin'] = 'admin';
    $url = '../admin/adminIndex.php';
    }
    //ajoute l'utilisateur à une variable de session.
    //************************************
    //$_SESSION['usernameAd'] = $pseudo;
    @header("Location:$url");
    exit();
    session_destroy();
    }
    else {
    @header("Location: auth.php");
    exit();
    }
     
    ?>
    celui ci, redirige bien les utilisateurs en fonction de leur droits

    et voici mon code qui est sensé imposer une restriction au niveau de l'acces des pages.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    session_start();
    if( $_SESSION['perso'] != 'amis' && $_SESSION['admin'] != 'admin'){
    die('Vous devez être authentifié pour acceder à cette partie du site.
    Enregistrez vous <a href="login.php">Ici</a>');
    }
    ?>
    mais celui ne m'a pas l'air efficace vu qu'en connaissant l'url je peut y acceder avec n'importe qui. quelqu'un peut m'expliquer merci.

  4. #4
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Si la variable de session $_SESSION['perso'] n'existe pas tu devrais avoir droit à un warning si tu travaille avec error_reporting à E_ALL.

    Ta méthode est bonne néanmoins je te proposerais de la changer un petit peu.

    Tu devrais mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!isset($_SESSION['perso']) && $_SESSION['perso'] != 'amis' ...)
    {
        die();
    }
    Je ne vois pas pourquoi cela ne marcherais pas.

    Je te conseille cette lecture aussi : http://phpsecurity.org/ch04.pdf

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    65
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    J'ai trouver la source du pb, mais je ne sais pas le resoudre :-)

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <?
    include"config-inc.php";
    session_start() ;
    //Connection à la BD et sélection de la base "utilisateurs"
    mysql_connect($db_host,$db_user,$db_pass) or die("Unable to connect to database");
    mysql_select_db($db_db) or die( "Unable to select database");
    //Requêtes mySQL pour établir la validation.
    if((isset($_POST['pseudo'])) && (isset($_POST['pwd']))) {
         $pseudo=$_POST['pseudo'];
    	 $pwd=$_POST['pwd'];
    }
     
    $query = " SELECT * FROM users WHERE pseudo='$pseudo' AND pwd='$pwd' ";
    //Exécution de la requête mySQL et
    //affectation du nombre de rangés valides dans la table.
    //********************************************
    $result = mysql_query($query) or die('error making query');
    $affected_rows = mysql_num_rows($result);
    //Si il y a un enregistrement, la connexion est valide sinon invalide.
    //*****************************************************
    if($affected_rows >= 1 ){
    //requete SQL me permetttant de definir les sections
    //*****************************************************
    $perso = mysql_query (" SELECT * FROM users WHERE pseudo='$pseudo'AND section='amis'");
    $admin = mysql_query (" SELECT * FROM users WHERE pseudo='$pseudo'AND section='admin'");
    $esiea = mysql_query( " SELECT * FROM users WHERE pseudo='$pseudo'AND section='esiea'");
    if($row1 = mysql_fetch_array($perso, MYSQL_NUM)){
    $_SESSION['perso'] = 'amis';
    $_SESSION['pseudo']= $pseudo;
    mysql_query("update connecter set connect = 1 where pseudo='$pseudo'");
    $url = '../deuil/persoIndex.php';
    } 
    if($row2 = mysql_fetch_array($esiea, MYSQL_NUM)){
    $_SESSION['esiea'] = 'esiea';
    $_SESSION['pseudo']= $pseudo;
    mysql_query("update connecter set connect = 2 where pseudo='$pseudo'" );
    $url = '../esiea/esieaIndex.php';
    }
    if($row3 = mysql_fetch_array($admin, MYSQL_NUM)){
    $_SESSION['admin'] = 'admin';
    $_SESSION['pseudo']= $pseudo;
    $url = '../admin/adminIndex.php';
    mysql_query("update connecter set connect = 3");
    }
    //ajoute l'utilisateur à une variable de session.
    //************************************
    //$_SESSION['usernameAd'] = $pseudo;
    @header("Location:$url");
    mysql_close($db_db);
    exit();
    session_destroy();
    }
    else {
    @header("Location: auth.php");
    exit();
    }
     
    ?>
    ceci est mon code pour de mon fichier login.php

    la le secure
    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
    17
    18
    19
    20
     
    <?php
    include"config-inc.php";
    session_start();
    mysql_connect($db_host,$db_user,$db_pass) or die("Unable to connect to database");
    echo"titi";
    mysql_select_db($db_db) or die( "Unable to select database");
    echo"tata";
     
     
    echo $_SESSION['pseudo'];
    $pseudo=$_SESSION['pseudo'];
    $req =mysql_query ("select section from connecter,utilisateur where connect=1 pseudo='$pseudo'");
     
    if(!(isset($_SESSION['perso'])) && $_SESSION['perso'] != $req ){
    die('Vous devez être authentifié pour acceder à cette partie du site.
    Enregistrez vous <a href="login.php">Ici</a>');
    echo '2';
    }
    ?>
    j'ai decider de passe par un autre table sql pour gerer les grade le probleme c qu'il n'arrive pas a selection la table

    et voici mon fichier de connection a la BDD config-inc.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?
    $db_host = 'localhost'; //Votre host, souvent localhost
    $db_user = 'root'; //votre login
    $db_pass = ''; //Votre mot de passe
    $db_db = 'connecter'; // Le nom de la base de donnee

  6. #6
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    65
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    pour le dernier probleme laisser tomber c moi le boulet je faisait appel a une BDD qui n'existait pas merci kan meme

Discussions similaires

  1. Comment faire des etats pour une application web ?
    Par ovh dans le forum Autres outils décisionnels
    Réponses: 6
    Dernier message: 06/07/2021, 03h25
  2. Réponses: 7
    Dernier message: 30/08/2013, 19h48
  3. Importance des accents pour une recherche dans postgre
    Par glouf dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 05/03/2005, 13h25
  4. [CR] Générer des espaces pour une valeur champ
    Par newpress dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/02/2005, 17h43
  5. [C#] Format des dates pour une ComboBox...
    Par frechy dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/01/2005, 17h08

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