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/2006, 23h35   #1
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Par défaut [Sécurité] problème de réactualisation des données du formulaire

Bonjour,

Je viens de m'apercevoir d'un bug dans mon script d'identification :

- Le gars vient de s'identifier.
- Il est dans son tableau de bord.
- Il clique déconnexion.
- Il fait un retour avec le navigateur.
- Une fenêtre lui dit que les données POST doivent être réenvoyées.
- Il clique OK.
- Il se retrouve sur son tableau de bord sans s'être réinscrit.
==> c'est bidon et son collègue de bureau peut faire de même à sa place.

Voilà comment ça fonctionne pour l'instant :
- Le gars arrive sur la page identification.php.
- Un script vérifie qu'aucune session n'est ouverte:
1) Si une session est déjà ouverte => message d'erreur.
2) Si aucune session n'est ouverte => affichage du formulaire d'identification.
- Nous considérons que le formulaire est affiché et rempli par notre gars.
- Envoie des informations à la page compte-accueil.php.
- Un script vérifie qu'il n'y a pas de session ouverte :
1) si une session est déjà ouverte, on affiche le tableau de bord via accueil.php (car les liens tableau de bord du site pointe sur la page compte-acceuil.php qui insère le fichier accueil.php dès lors qu'une session est ouverte).
2) Si aucune session n'est ouverte, on effectue le script de vérification du couple mail/pseudo :
1- Si ok on affiche le tableau de bord en insérant le fichier accueil.php
2- Si faux on réaffiche un formulaire d'identifcation.

Donc en soit tout cela fonctionne bien, si ce n'est ce problème de réactualisation des informations.
Je veux que ces informations disparaissent ou qu'il se passe quelque chose dans le script faisant qu'elles soient perdues en cas de retour avec le navigateur.


J'espère que vous réussirez à comprendre et je vous remercie d'avance de vos conseils d'experts
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 23h40   #2
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
Salut !

il faut que tu sépares le script vérifiant l'identification de celui indiquant le résultat (en passant de l'un à l'autre via un header Location)

exemple :
Code :
1
2
<?php if(authentification_OK()) die(header('Location: member.php'));
else die(header('Location: nomember.php')); ?>
Comme ça, même en faisant précédant, tu ne pourra pas revenir à la page de soumission du formulaire...
__________________
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 15/06/2006, 23h49   #3
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Salut Swoög,

Déjà je viens de vérifier sur Développez, ça fait pareil, à ceci près que si le gars revient sur le tableau de bord après s'être déconnecté alors en effet le tableau de bord se réaffiche, mais dès le premier clic sur un lien, cette fois on est bel et bien déconnecté.

Pour le header, j'y ai pensé, mais je crois savoir que cela doit être placé tout en haut, or mes script sont inséré en milieu de page.
J'ai bien peur de devoir (presque) tout reprendre.

Si je fais ça, ça fonctionnera aussi pour le header ?
Code :
1
2
<?php if(isset($_SESSION['login'])) die(header('Location: member.php'));
else die(header('Location: nomember.php')); ?>
Sachant que la variable de session "login" n'est créée que si la connexion est réussi.
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 23h49   #4
Membre éprouvé
 
Homme Cyrill Gremaud
Ingénieur systèmes et réseaux
Inscription : août 2005
Messages : 1 002
Détails du profil
Informations personnelles :
Nom : Homme Cyrill Gremaud
Âge : 23
Localisation : Suisse

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Enseignement

Informations forums :
Inscription : août 2005
Messages : 1 002
Points : 429
Points : 429
oui cest une méthode très utiliser par les gros sites web ! tu as par exemple 3 etapes dans le formulaire et si la personne fait un précédent, le plus souvent il revient a la premiere phase du formulaire !

bonne chance
__________________
Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
cyrill.gremaud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 23h53   #5
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 le but, je veux que ça réaffiche le formulaire d'identification initial.

Au fait, qu'est ce qui fait que les informations sont perdues suite à un header ?

Car même si je fais plusieurs en retour en arrière, les informations du formulaire d'il y a trois pages d'avant sont encore renvoyées par le navigateur.
Ce n'est pas le cas avec un header ? Pourquoi ?
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2006, 00h02   #6
Membre éprouvé
 
Homme Cyrill Gremaud
Ingénieur systèmes et réseaux
Inscription : août 2005
Messages : 1 002
Détails du profil
Informations personnelles :
Nom : Homme Cyrill Gremaud
Âge : 23
Localisation : Suisse

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Enseignement

Informations forums :
Inscription : août 2005
Messages : 1 002
Points : 429
Points : 429
personelement je me suis aussi toujours poser la question mais je n'ai jamais vraiment chercher la réponse mais il existe peut etre un complément au header qui permet de vider la mémoire mais je ne sais pas du tout si sa fonctionne... je serai très curieux de savoir pourquoi... je cherche et si je toruve quelque chose je te met au courant !
__________________
Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
cyrill.gremaud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2006, 00h08   #7
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
pour envoyer les réponses, le navigateur envoie au serveur une requête POST avec les infos.

le header Location force le navigateur à faire une nouvelle requête GET (sans les infos cette fois) pour afficher la bonne page

d'où la perte des données.

@psychoBob : si au début la page du tableau de bord est réaffichée, c'est parce qu'elle est dans le cache, dès que tu clique sur un lien (et donc qu'il y a envoie d'une requête au serveur), alors le serveur renvoie la page indiquant que l'utilisateur n'est pas loggué, de même si un formulaire est soumis, pour le serveur, le navigateur ne sera plus loggué car la session aura été détruite
__________________
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 16/06/2006, 00h19   #8
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
commentaire auto-annulé, la prise de tête continue.( ça serait pas mal de pouvoir supprimer directement ses commentaires, ou au moins le dernier).
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2006, 00h57   #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
J'ai un problème spécifique au cookie de session, je viens donc de poster dans la partie sécurité.
Comme c'est directement lié au problème de ce post, je me permet de poster le lien de l'autre sujet ici, car je ne peux avancer sur ce problème tant que l'autre n'est pas réglé

http://www.developpez.net/forums/sho...d.php?t=166671
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob 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 13h13.


 
 
 
 
Partenaires

Hébergement Web