Problème de sécurité session

mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 - 19 févr. 2012 à 22:53
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 10 avril 2012 à 21:05
Bheu.. n'aurais-je pas compris qque chose au sujet des sessions

j'ai un formulaire de connexion qui envoie la variable $user à mon script qui vérifie si cet utilisateur existe dans ma base, si oui:
session_start();
$_SESSION['user'] =  $user;
echo 'Vous êtes connecté';


puis sur les autres pages du site:
<?php session_start(); ?>
<html>
...
if(!isset($_SESSION['user'])){ echo 'Passez par la page accueil'; exit;}
$user=$_SESSION['user'];

et j'utilise ma variable $user

et voila pas que lors de petits tests pour vérifier ma sécurité je fais
echo 'Pour controle $_session: '.$_SESSION['user'].' et $user: '.$user;

ca m'affiche bien l' utilisateur

et plus loin je mets:
$user ='xxx';
$user=$_SESSION['user'];
echo 'Pour controle $_session: '.$_SESSION['user'].' et $user: '.$user;

et ca m'affiche: "Pour controle $_session: xxx et $user: xxx"

Ca doit être tout bête, mais là j'vois vraiment pas..

8 réponses

startaki Messages postés 1 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 8 avril 2012
8 avril 2012 à 15:31
C'est normal vu que tu définis ta variable $user comme étant une constante
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
8 avril 2012 à 17:45
Salut,

C'est normal vu que tu définis ta variable $user comme étant une constante

Rien de ce qu'il a posté ne l'indique.

@mailliam : Si c'est toujours d'actualité, tu peux donner plus de code stp ? En particulier assez de code pour que nous puissions reproduire ton problème parce qu'avec si peu ce n'est pas possible de voir grand chose.
0
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
9 avril 2012 à 17:53
Coucou,
merci de vous intéresser à mon problème! En fait je ne sais pas si j'ai été très clair, quand je teste la valeur dans mon cookie de session, elle est correcte:
echo 'Le cookie de $_session est égal à: '.$_SESSION['user'].' et $user: '.$user;


normal puisque quand j'ai créé la session sur ma page de login, j'ai mis:
$_SESSION['user'] = $user;


Ce que je ne comprends pas c'est que dans mes pages, si je mets:
$user='xxx';
$user=$_SESSION['user'];

on est d'accord que $user devrait être égal à $_SESSION['user'] et non 'xxx'
alors que non les 2 sont égal à 'xxx'

Voici le code de ma page:
<?php session_start(); ?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>

<?php
// Si la variable de session n'existe pas -> exit
if(!isset($_SESSION['user'])){ echo 'Vous n êtes pas autorisé à acceder à cette zone, passez par la page de login..

</html>'; exit; }

$user='xxx'; //ici je teste en effacant ma variable $user
$user=$_SESSION['user']; //je la récupère du cookie de session

include '../secu/connnect.php';
$position = htmlentities ($_POST['position'], ENT_QUOTES);
$position=mysql_real_escape_string(strip_tags(trim($position)));
$action = htmlentities ($_POST['action'], ENT_QUOTES);
$action=mysql_real_escape_string(strip_tags(trim($action)));
$menu = htmlentities ($_POST['menu'], ENT_QUOTES);
$menu=mysql_real_escape_string(strip_tags(trim($menu)));

(...)
echo $user; //ici il m'affiche xxx !?


</html>


On est d'accord que c'est bizarre? Ou c'est moi qui fait une grosse faute?
Je vais essayer de reprendre mon code en enlevant toutes les variables et en les remettant l'une après l'autre, si ca se trouve c'est moi qui ai fait une erreur toute bête.. Je voulais surtout savoir si le principe vous semblait juste, ou si je fais faux dans l'utilisation des sessions, avant que je ne me lance dans une recherche poussée..

Merci à vous 2
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
9 avril 2012 à 18:01
Salut,

Comme ça je vois deux possibilités :
- $_SESSION['user'] valais également xxx.
- Ton fichier ../secu/connnect.php manipule la variable $user et est la cause du problème.

Bref, à fin de voir un peu mieux ce qu'il se passe, je te recommande de changer ceci :
<?php
$user='xxx'; //ici je teste en effacant ma variable $user
$user=$_SESSION['user']; //je la récupère du cookie de session
?>

En ceci :
<?php
var_dump($user, $_SESSION['user']);
$user='xxx'; //ici je teste en effacant ma variable $user
var_dump($user, $_SESSION['user']);
$user=$_SESSION['user']; //je la récupère du cookie de session
var_dump($user, $_SESSION['user']);
?>

Et poste donc le résultat stp.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
10 avril 2012 à 01:13
ReCoucou!

Le nom d'utilisateur contenu dans $_SESSION['user'] est: 'Pascal'
et dans le fichier ../secu/connnect.php il y a juste mysql_connect.

en faisant ta modif:
var_dump($user, $_SESSION['user']);echo '
';
$user='xxx'; //ici je teste en effacant ma variable $user
var_dump($user, $_SESSION['user']);echo '
';
$user=$_SESSION['user']; //je la récupère du cookie de session
var_dump($user, $_SESSION['user']);

ça me retourne:
string(6) "Pascal" string(6) "Pascal"
string(3) "xxx" string(3) "xxx"
string(3) "xxx" string(3) "xxx"

ca m'énerve je comprends pas
j'ai relu 2 tuto sur les sessions, j'ai pas l'impression de faire faux..
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
10 avril 2012 à 01:24
Re,

La seule manière pour que ceci soit possible est que $user ou $_SESSION['user'] soit une référence sur l'autre. Est-ce que par hasard register_globals est activé ?
0
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
10 avril 2012 à 18:19
Re,

oui dans phpinfo(); ca me dit que register_globals est sur ON et ma version de PHP est 5.1.33

Je connaissais pas du tout cette directive, j'ai lu ce qui est dit dans le manuel, tu conseillerais de la mettre sur OFF?
Si c'est sur OFF les utilisateurs ne peuvent pas créer de variables qui ne seraient pas dans le code PHP, c'est bien cela?
Car là ça veut dire que ma variable de session $_SESSION['user'] pourrait être créée avec GET via l'URL??

J'utilise XAMPP sur linux ubuntu, ce que je vais faire c'est mettre mes pages sur mon serveur et voir si ça me fait le même problème..
Par contre je ne pourrais pas le faire d'ici la fin de la semaine, je te redirais ce que ça a donné!

Merci en tout cas
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
10 avril 2012 à 21:05
Re,

tu conseillerais de la mettre sur OFF?

Oui, ça devrais régler ton problème.

Si c'est sur OFF les utilisateurs ne peuvent pas créer de variables qui ne seraient pas dans le code PHP, c'est bien cela?

Non.
0
Rejoignez-nous