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 06/05/2006, 21h21   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 33
Points : 10
Points : 10
Par défaut [Sécurité] Problème reconnaissance session

Bonsoir,
je suis en train de créer un site et depuis ce soir j'ai un petit problème. Lorsque je me connecte sur mon site, ensuite je voudrais qu'il reconnaise que je suis connecté donc j'ai mi :

<?php
session_start();
if(!isset($_SESSION['login'])) {
include ("login.html");
}
else {
echo "Bonjour <strong>$login</strong>";}
?>

Et il doit y avoir un problème...

En espérant avoir été assez clair.
Merci à tous !
miroufle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h25   #2
Membre émérite
 
Avatar de Yobs
 
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 808
Points : 808
Envoyer un message via MSN à Yobs
Quel erreur as-tu?

Je te conseille d'utiliser header('Location: tapage.php') pour rediriger l'utilisateur plutot que include().

Et utilise $_SESSION['login'] plutot que login dans ton echo.
__________________
Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés
Yobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h28   #3
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
le problème est que tu as oublié la balise code
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h32   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 33
Points : 10
Points : 10
Et ben en fait,
il faut être loggué pour poouvoir accéder à certaines pages,
donc avant chaque page "protégée" j'ai mis le script suivi :
Code :
1
2
3
4
5
6
7
8
<?
session_start();
if(!isset($_SESSION['login'])) {
  echo 'une phrase';
  include('login.html');
  exit;
}
?>
Et pour se connecter j'ai celui-ci :
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
 
<?
mysql_connect("****", "***", "***"); 
mysql_select_db("***"); 
 
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
  extract($_POST);
  $sql = "select pwd from tbl_user where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
  $data = mysql_fetch_assoc($req);
 
  if($data['pwd'] != $pass) {
    echo '<p>Mauvais nom d\'utilisateur / mot de passe. Merci de recommencer</p>';
    include('login.html'); 
    exit;
  }
  else {
    session_start();
    $_SESSION['login'] = $login;
    echo '<br><br><br>Vous êtes dès à présent connecté';
  }    
}
else {
  echo 'Vous avez oublié de remplir un champ.</p>';
   include('login.html');
   exit;
}
?>
J'espère que vous aurez compris
miroufle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h33   #5
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
!!!!
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h34   #6
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
tu sembles utiliser les globals_vars :
C'est PAS BIEN DU TOUT (failles de sécurité !)
tu utilises $_POST, $_SESSION, etc...
utilise-les tout le temps
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h41   #7
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 33
Points : 10
Points : 10
désolé pour les balise c'est rajouté

ralalala , je n'ai jamais utilisé les globals_vars.
Mais bon mon niveau me fait défaut lol.

Mais en plus ce matin tout marchait correctement, j'ai faire quelque chose de pas bien
miroufle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h46   #8
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
les globals_vars, c'est une configuration qui fait que le contenu de $_POST, $_GET, etc... pase automatiquement dans l'espace des variables courantes ($_POST['champ'] accessible directement via $champ, etc...)

le problème est qu'il suffit alors de faire passer une variable en GET pour qu'elle soit injecter dans le code, c'est donc TRES risqué

il vaut mieux utiliser les tableaux super globaux ($_POST, $_GET, $_SESSION, etc...) et faire attention à toujours initialiser ses variables...
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h47   #9
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Citation:
Envoyé par Swoög
tu sembles utiliser les globals_vars :
C'est PAS BIEN DU TOUT (failles de sécurité !)
tu utilises $_POST, $_SESSION, etc...
utilise-les tout le temps
Oui, sans vouloir troler le post, qu'appeles-tu une globals_vars et surtout qu'elle est cette faille de sécurité ?

**edit** Réponse de Swoög en même temps...
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h48   #10
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
Citation:
Envoyé par psychoBob
Oui, sans vouloir troler le post, qu'appeles-tu une globals_vars et surtout qu'elle est cette faille de sécurité ?
expliqué plus haut
**Mort de Rire** on supprime nos cross-post ?
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h49   #11
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Citation:
Envoyé par Swoög
les globals_vars, c'est une configuration qui fait que le contenu de $_POST, $_GET, etc... pase automatiquement dans l'espace des variables courantes ($_POST['champ'] accessible directement via $champ, etc...)

le problème est qu'il suffit alors de faire passer une variable en GET pour qu'elle soit injecter dans le code, c'est donc TRES risqué

il vaut mieux utiliser les tableaux super globaux ($_POST, $_GET, $_SESSION, etc...) et faire attention à toujours initialiser ses variables...
Ceci dit, si tu filtres toutes les variables avec htmlspecialchars et surtout mysql_real_escape_string, il me semble que cela supprime les risques inhérents à une variable injectée sournoisement. Ai-je tort ? Ai-je raison ? Hum... seul l'avenir nous le dira.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 21h51   #12
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
Citation:
Envoyé par psychoBob
Ceci dit, si tu filtres toutes les variables avec htmlspecialchars et surtout mysql_real_escape_string, il me semble que cela supprime les risques inhérents à une variable injectée sournoisement. Ai-je tort ? Ai-je raison ? Hum... seul l'avenir nous le dira.
tort, tu parles ici d'injections SQL ou HTML...

alors qu'avec les globals vars, il s'agit carrément de modifier la valeur d'une variable qu'on crois être de session, de cookie, d'environnement, etc....
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 22h01   #13
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 33
Points : 10
Points : 10
Merci de votre aide,
le problème est résolu.
miroufle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 22h01   #14
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
De rien
Bonne continuation ^^
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 22h26   #15
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Citation:
Envoyé par Swoög
tort, tu parles ici d'injections SQL ou HTML...

alors qu'avec les globals vars, il s'agit carrément de modifier la valeur d'une variable qu'on crois être de session, de cookie, d'environnement, etc....
Oui mais bon, qu'est ce qu'il peut en faire le pirate, de sa variable avec une valeur modifiée ? Tant qu'il ne peut pas y glisser une requete sql ou un script php, puisqu'ils sont désactivés par les fonctions citées plus haut, ça va lui servir à quoi ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 22h32   #16
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
à accèder à une partie protéger, modifier la valeur d'une variable pour provoquer une erreure pour avoir des infos sur le serveur...
comme la liste des fichiers, les identifiants de connexion à la base etc...
tout dépend du code PHP....

tu serais surpris de voir tout ce qu'on peut faire avec une "simple" injection de variable, et je suis extrêmement loin d'être expert en la matière ^^
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 22h37   #17
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
c'est chi...

C'est l'histoire des register_global à on c'est ça ?

Mais bon, par exemple : on fait une requete sql et avec les informations récupérées on initialise 2 variables de sessions. Bon, là elles ne sont plus modifiable les variables donc.

Le truc c'est juste de toujours préciser $_SESSION['variable'], ou $_POST[variable], et jamais $variable tout seul, c'est ça ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 22h45   #18
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
exactement, t'as compris
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 23h01   #19
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
J'ai compris, j'ai compris... disons qu'a priori je tombe pas dans le piège...

Ceci dit je ne vois pas la différence, en terme de sécurité, entre $_POST[variable] et $variable. QUe cela fasse une différence, d'accord, mais pourquoi...? Parce que cela dit que la variable provient forcément d'un formulaire ? Mais de toute façon, le pirate va bien l'insérer via un formulaire sa variable...

G pas compris en fait... Mais au moins j'ai compris que j'ai pas compris. Avant j'avais même pas conscience de pas avoir compris.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 23h18   #20
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
lol

c'est parce que là tu veux $_POST['variable'] qui est fournis par l'utilisateur...

maintenant, supposons que la variable de session acces te permette de définir si quelqu'un est visiteur, administrateur, membre...

si la session existe, et que la configuration est bonne, pas de problème, ce sont les variables de sessions qui prédomineront par dessus les get, post et cookies...


MAIS si la session n'existe pas...

il suffit de faire http://lapage?acces=admin

à ce moment, $acces vaudra 'admin' et de ce fait, tu donnera un accès admin a quelqu'un qui n'est même pas identifié...

Bien sûr, cela dépend du code qui est dessous...
mais ça demande de toujours faire un unset sur les variables qui ne devraient pas exister, doubler les vérifications... ou... passer par les tableaux super-globaux [ce qui revient à ne pas utiliser les globals_vars] pour vérifier que les variables ont bien les valeurs qu'elles devraient avoir...
la solution la plus sécurisée et la moins couteuse est d'utiliser tout le temps les tableaux super globaux
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög 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 11h50.


 
 
 
 
Partenaires

Hébergement Web