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 15/06/2007, 14h45   #1
Candidat au titre de Membre du Club
 
Étudiant
Inscription : décembre 2006
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 65
Points : 12
Points : 12
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
CROSS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 15h24   #2
Membre régulier
 
Étudiant
Inscription : juin 2006
Messages : 83
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 83
Points : 84
Points : 84
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
Wharenn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 20h49   #3
Candidat au titre de Membre du Club
 
Étudiant
Inscription : décembre 2006
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 65
Points : 12
Points : 12
en gros je vais vous mettre mon code login.php:
Code :
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 :
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.
CROSS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2007, 16h59   #4
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
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 :
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
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 12h27   #5
Candidat au titre de Membre du Club
 
Étudiant
Inscription : décembre 2006
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

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

Code :
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 :
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 :
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
CROSS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 12h46   #6
Candidat au titre de Membre du Club
 
Étudiant
Inscription : décembre 2006
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 65
Points : 12
Points : 12
pour le dernier probleme laisser tomber c moi le boulet je faisait appel a une BDD qui n'existait pas merci kan meme
CROSS 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 12h06.


 
 
 
 
Partenaires

Hébergement Web