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 :

Admin Generator Batch action csrf_token


Sujet :

Symfony PHP

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut Admin Generator Batch action csrf_token
    Salu, j'ai finis mon admin generator mais le problème vient des actions batch(supprimer) que l'on peut effectuer sur plusieurs objets à la fois.

    Quand je fais un symfony cc et que après je sélectionne des objets et que je fais supprimer via le select cela marche.

    Mais quand je ferme firefox et le réouvre ou que je vais avec un autre navigateur donc avec une session différente et bien sa me met _csrf_token [CSRF attack detected.] quand je veux supprimer plusieurs objets à la fois.

    Je ne sais pas d'ou celà peut venir. Je pense c'est un token différent entre la session et l'input hidden mais comment corriger cela.

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 66
    Par défaut
    C'est parfaitement normal, c'est une protection qui est mise automatiquement dans le but d'éviter qu'un utilisateur ayant de mauvaises intentions, te fasse valider un formulaire sans que tu t'en rende compte ( par exemple ).

    Cf : wikipedia Cross Site Request Forgery ( CSRF )

    Le token est donc généré a la creation d'un formulaire en fonction d'un parametre dans settings.yml : csrf_secret, de l'identifiant de session, et de la classe du formulaire
    extrait de la classe sfForm :
    public function getCSRFToken($secret = null)
    {
    if (is_null($secret))
    {
    $secret = self::$CSRFSecret;
    }

    return md5($secret.session_id().get_class($this));
    }
    et est affiché dans un champ invisble.

    Lorsque le formulaire est posté symfony verifie ( automatiquement ) qu'un token a bien été soumis et qu'il correspond bien a :
    $secret.session_id().get_class($this)

    Du coup, si tu veux une protection csrf non "session_aware" pour un formulaire donné, tu peux dans ta classe de formulaire, redefinir getCSRFToken :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      public function getCSRFToken($secret = null)
      {
        if (is_null($secret))
        {
          $secret = self::$CSRFSecret;
        }
    
        return md5($secret.get_class($this));
      }
    ça diminuera la qualité de la protection, mais ça te protège toujours, car l'assaillant devra deviner le $secret et la classe du formulaire

Discussions similaires

  1. [1.x] recuperer le filtre d'un admin generator pour action download
    Par erictomcat dans le forum Symfony
    Réponses: 10
    Dernier message: 28/06/2011, 14h55
  2. [1.x] retirer une action/lien dans l admin generator
    Par mantex dans le forum Symfony
    Réponses: 4
    Dernier message: 02/02/2011, 10h44
  3. Réponses: 3
    Dernier message: 06/12/2010, 20h13
  4. [1.x] Admin generator, changer l'action edit par défaut
    Par jejeman dans le forum Symfony
    Réponses: 2
    Dernier message: 07/10/2010, 09h50
  5. Réponses: 7
    Dernier message: 25/05/2008, 17h06

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