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

Symfony PHP Discussion :

protection formulaire checkCSRFProtection() [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Par défaut protection formulaire checkCSRFProtection()
    J' essai de protéger un formulaire pour éviter les aller/retour de sousmission d' un formulaire.

    J' ai pu voir ici est la qu' il fallait appeler la fonction checkCSRFProtection() au moment du bind du formulaire. Cependant j' ai toujours un message m' indiquant que le __csrf est requis alors que celui est bien posté.

    Je ne vois pas ce pourquoi.

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Le CSRF permet de s'assurer que le formulaire est soumis par l'utilisateur à qui il a été envoyé. Et pas par un autre.

    Il ne permet pas d'éviter qu'un formulaire soit relancé plusieurs fois par une même personne.

    Ca il faudra le gérer directement.

    Ton formulaire est basé sur un formulaire doctrine (sur une table) où non ?

    Peux tu mettre le code du form et du contrôleur ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Par défaut
    Oui en fait le formulaire est déjà vérifié avec un token qui stoké en base c est ce qui permet de reconnaitre celui qui va saisir le formulaire.

    Par contre une fois validé je redirige sur un template de remerciement et n' empêche de saisir à nouveau le formulaire.

    Comment générer une boite de dialogue obligeant la page a être rappeler dans ce cas si mon token n' est plus dans l'url le formulaire ne sera pas chargé.

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    J'ai beaucoup de mal à comprendre ce que tu veux.

    Tu veux un formulaire qui ne peut être saisi qu'une fois (pour toute, pour une période, en fonction d'un projet...)

    Et tu veux gérer cela dans une table (le fait que le formulaire ait été validé une fois).

    Par contre, je ne comprend pas ce que le token CSRF vient faire dans une table de vérification ???

    Pourrais-tu confirmer que j'ai compris ce que j'ai compris

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Par défaut
    Tout d' abord merci de ton aide.

    Concernant le formulaire je pense que tu n' as compris ce que je fais.

    J' ai un token, c 'est plus un hash en fait qui est stocké dans une table.

    Ce token est associé a une invitation envoyé par email. Comme cette partie du projet est frontend , cela me permet de qui vient sur le formulaire est de jeter toute personne qui n' est pas invité explicitement.

    Jusque la tout va bien. C 'est assez clair ?

    La personne X qui est invité doit remplir un formulaire d evaluation avez des champs obligatoires et soumettre son formulaire une fois rempli .

    Toujours clair ?

    La contrainte.. le formulaire ne doit être saisie 2 fois .. sinon j' ai un doublon sur l' évaluation de X.

    C 'est à ce moment la que je pensais utiliser la fonction checkCSRFProtection() pour vérifier que la personne avait déja.


    j'ai fini par contourner le problème en utilisant une clé unique (contributor_id) dans mon shéma sur un des champs hidden qui est soumis dans le formulaire.


    Comme ça si j' essai de faire un allez retour avec le formulaire j' obtiens été une erreur 500 car la table contient déjà un enregistrement avec le champs unique .


    Pas très propre je l' accorde mais ça le mérite de faire ce qui est attendu.

    J' avais d' autres idées mais j' ai pas assez de temps pour les tester.

    Si tu en as une, je veux bien la lire...

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Sur le coup, je pense avoir compris

    Tu ne peux pas te servir du token CSRF dans l'optique de cette validation. En effet, il n'est générer que pour s'assurer que la personne qui rempli un formulaire quelconque est bien celle a qui le formulaire a été envoyé. Pour validé que le token a été pris, je procèderais de la manière suivante.

    Arrivée dans une action dédiée qui vérifie que la personne a un token viable, brule le token d'invitation (champ boolean ou suppression) et envoie sur un autre écran pour la saisie des informations. L'intégrité de la session permet de garantir l'unicité de la création. Et le token CRSF permet de valider que la session n'as pas été détourner lors de la création.

    Est-ce plus simple ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Par défaut
    J'ai fait plus simple.

    Ajouter un champs unique dans la base. Ainsi un même contributeur ne peut évaluer 2 fois.

    Merci quand même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. incompatibilité protection formulaire et Styles
    Par tetsuo_001 dans le forum Word
    Réponses: 1
    Dernier message: 28/10/2013, 13h39
  2. Protection formulaire - sous formulaire
    Par Salsaboy60 dans le forum IHM
    Réponses: 5
    Dernier message: 04/03/2009, 17h52
  3. Securite et protection formulaire
    Par Strig dans le forum Sécurité
    Réponses: 8
    Dernier message: 04/07/2008, 15h28
  4. [VBA-W] probleme de protection formulaire
    Par benco dans le forum VBA Word
    Réponses: 5
    Dernier message: 25/09/2007, 10h39
  5. [VBA WORD] Mailmerge et protection formulaire
    Par Marc Driver dans le forum VBA Word
    Réponses: 2
    Dernier message: 03/08/2005, 12h51

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