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 :

sfDoctrineGuardPlugin et hashage de mot de passe [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 260
    Points : 142
    Points
    142
    Par défaut sfDoctrineGuardPlugin et hashage de mot de passe
    Bonjour,
    j'ai installé sfDoctrineGuardPlugin et personnalisé les actions sfGuardAuth comme indiqué au paragraphe "Customize sfGuardAuth module actions" de la documentation du plugin. C'est notamment pour vérifier que le compte a été activé, que l'utilisateur n'a pas été banni, etc. Mais l'authentification me pose des problèmes. Voici un portion du configure de mon formulaire signin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $this->setValidators(array(
    			'password'			=> new sfValidatorString(
    										array('required' => true),
    										array('required' => 'Vous devez fournir votre mot de passe')					   
    									);
     
    $this->validatorSchema->setPostValidator(
    			new sfValidatorCallback(array('callback' => array($this, 'checkLogin')))										 
    		);
     
    public function checkLogin($validator, $values)
      {
    	  if ($membre->getPassword() != md5($values['password']))
    	  {
    		  // Mot de passe incorrect
    		  throw new sfValidatorError($validator, 'Mot de passe incorrect.');
    	  }
      }
    Moi j'ai pensé que pour crypter les mots de passe, sfGuard utiliser la fonction md5, mais ca me renvoie toujours "mot de passe incorrect". Quelqu'un sait comment les mots de passe sont cryptés dans sfGuard ? où md5 donne-t-il des résultats différents sur une même chaîne ? Merci de vos réponses.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 123
    Points
    123
    Par défaut
    Salut,

    Alors pour doctrine guard plugin, tu as déjà une fonction toute faite pour vérifier le mot de passe. Cette fonction est 'executeSignin' qui est dans 'plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php'

    Tu peut t'en inspirer pour réécrire ton action de connection.

    Ensuite pour faire beaucoup plus simple pour l'indentification, tu peut modifier l'option 'is_secure' dans tes fichiers 'security.yml'

    Si jamais tu met 'is_secure' à 'true', symfony va vérifier tout seul si l'utilisateur est connecté, et si il ne l'est pas, il va afficher la page de login.

    Donc pour résumer tu as deux possibilités :
    • simplement activer le module 'sfGuardAuth' dans l'application ou tu doit identifier l'utilisateur et mettre le paramètre 'is_secure' à true. Comme ca même pas besoin de réecrire la fonction de vérification du mot de passe, ...
    • Tu peut surcharger la classe sfGuardAuthActions, mais à ce moment la tu réécrit un peu la roue, ce qui n'est pas nécessaire AMHA


    J'espere que j'ai pu t'aider,

    Inarius

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    En complément d'information :
    Vas simplement voir à quoi ressemble les données enregistrés par sfGuard dans ta bdd : tu peux voir un champs "algorithm" qui contient le nom de l'algo de cryptage utilisé pour le user.
    Par défaut, c'est sha1.
    En + de ca, sfGuard utilise un système de grain de sable (champ salt dans la bdd) pour rendre le craquage du mot de passe plus difficile, blablabla, jvais pas te faire un cours sur la sécurité

  4. #4
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 260
    Points : 142
    Points
    142
    Par défaut
    D'après mes recherches, le mot de passe est crypté non seulement avec la valeur entrée, mais aussi avec la valeur des username, de l'email et du timestamp de l'inscription, si bien que le reconstituer par soi à partir de la seule valeur entrée par l'utilisateur est pratiquement impossible. J'ai du créer un autre champ de password ou j'entre les mots de passe uniquement hashé avec md5.

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 601
    Points
    188 601
    Par défaut
    Précision sur le langage assez importante : quand on chiffre, on effectue un cryptage, le but est de transformer le message de telle sorte qu'on puisse le récupérer (exemple : Rijndael/AES) ; quand on hashe, on ne veut qu'une empreinte unique, on ne veut en aucun cas retrouver l'original (exemples : SHA-1, MD4, MD5). Maintenant, utiliser du MD5... c'est mal. C'est très mal. Il n'est plus, cryptographiquement parlant, considéré comme sûr depuis 2004. Voir à ce sujet Wikipedia, par exemple, ainsi que ses références. Utiliser du SHA1, disponible en standard dans PHP (sha1() au lieu de md5()), est nettement meilleur.

    Et là... je remarque que tu souhaites récupérer les mots de passe de tes utilisateurs ?! Tout est prévu justement pour l'éviter !

    Si tu veux bannir des utilisateurs, il doit être possible d'avoir quelque chose de http://www.symfony-project.org/plugi...ineApplyPlugin. Un utilisateur non confirmé ne peut pas se logger. Tu dois pouvoir te baser sur ce qu'ils font. Ils mettent d'ailleurs de base l'activation, ce que tu recherches ! Ne recode pas toi-même ce qui existe déjà, ça s'appelle réinventer la roue et ça a pour synonyme "perte de temps".
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  6. #6
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 260
    Points : 142
    Points
    142
    Par défaut
    Je suis entièrement d'accord. Si on doit réinventer la roue, mieux vaut ne pas utiliser symfony. Je n'avais pas connaissance de ce plugin. J'y jette un coup d'oeil en attendant. A bientôt.

  7. #7
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 260
    Points : 142
    Points
    142
    Par défaut
    J'ai téléchargé l'archive du plugin et je l'ai bien installé. La tâche symfony doctrine:generate-migrations-diff s'est passée sans problème. Mais j’exécute symfony doctrine:migrate, ca génère quantité d'erreur dont celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Base table or view already exists.
    J'ai fait un peu de recherches, mais je n'ai rien trouvé de solide pour m'en tirer. Tu peux aider ? merci.

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

Discussions similaires

  1. hashage de mots de passe incorrect
    Par supcomingenieur dans le forum Langage
    Réponses: 3
    Dernier message: 30/05/2013, 18h04
  2. Réponses: 1
    Dernier message: 17/08/2012, 13h23
  3. Hashage de mot de passe en SHA-1
    Par Yoann.chambonnet dans le forum Spring
    Réponses: 1
    Dernier message: 29/09/2009, 16h03
  4. [Security] Implémentation de UserDetailsService et hashage du mot de passe
    Par Treydone dans le forum Spring
    Réponses: 2
    Dernier message: 02/09/2009, 20h26
  5. Sécurité BDD, hashage des mots de passe
    Par Link3 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/10/2006, 18h39

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