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écurité] problème de réactualisation des données du formulaire


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    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.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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, Cours PHP, Cours JavaScript, 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)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Points : 493
    Points
    493
    Par défaut
    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...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Points : 493
    Points
    493
    Par défaut
    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...

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    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, Cours PHP, Cours JavaScript, 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)

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/01/2014, 10h44
  2. Réponses: 4
    Dernier message: 09/10/2011, 13h22
  3. Probléme d'envoie des données d'un formulaire
    Par iMano38 dans le forum Langage
    Réponses: 18
    Dernier message: 25/05/2011, 16h27
  4. Réponses: 1
    Dernier message: 31/08/2009, 05h17
  5. Réponses: 19
    Dernier message: 16/01/2008, 17h41

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