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

Requêtes MySQL Discussion :

Optimisation d'une recherche d'un user par son pseudo et mot de passe


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Points : 24
    Points
    24
    Par défaut Optimisation d'une recherche d'un user par son pseudo et mot de passe
    Bonjour tous le monde,

    Je suis un gros debutant en mySQL, deux jours tout au plus (je suis ingenieur dev en systeme embarque ...), et j'ai une question tres simple :

    Le scénario est le suivant:
    Je gere une table d'utilisateur classique comme des millions de sites aujourd'hui, c'est a dire avec:
    - Nom
    - Mail
    - pseudo (éventuellement)
    - mdp (mot de passe)
    - ect ...
    - et un ID unique comme PRIMARY_KEY.

    Question:
    Lorsque vient un user pour se connecter, la majorité des devellopeurs font un
    SELECT pseudo, FROM user WHERE pseudo = "toto",
    pour ensuite verifier le mot de passe.

    J'imagine que dans une tel solution, la base de données parcours la totalité des pseudos et fait un "if" ...

    N'est t'il pas plus intelligent de creer a l'enregistrement un identifiant unique, fonction du peudo et mdp (a l'aide d'algo de chiffrement ou autre ) et de s'en servir comme PRIMARY_KEY ? J'imagine qu'une recherche sur une PRIMARY_KEY doit etre plus rapide non ?

    Merci

  2. #2
    Membre actif Avatar de Ethan 0x21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Points : 261
    Points
    261
    Par défaut
    Bonsoir,

    C'est exa je l'est d'ailleur déjà implémenté, tu pourrais hacher via md5 par exemple lors de la création/(modification mot de passe)/(modification login) un champ indexé dans ta table MySQL via CREATE INDEX.

    Puis lors d'une connexion d'un users, tu hash via php le login et le mdp founis, puis tu lance une requete SQL pour récupérer le tuple associé avec le hash founis en paramétre.

    Cependant cette méthode ne fonctionne que pour la connexion d'un user, car par exemple pour rechercher des utilisateur dans un formulaire de recherche par exemple, il te manque le mot de passe pour creer les hashs, à moin d'appliquer une politique de login unique (uid) qui permettrai de ce passer simplement des mot de passe pour le haschage.

    Cdt

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Points : 24
    Points
    24
    Par défaut
    Merci Ethan pour ta reponse, ca fait plaisir de voir que finalement ma tete réfléchi encore un peu.

    Pour le login unique sans mots de passe ca ne me plait pas trop.

    Pour le probleme de parcours complet en cas de relève de tous les users, tu as raison, mais l'autre solution ne propose de toute facon pas mieux.

    Merci, je vais implementer cela ...

  4. #4
    Membre actif Avatar de Ethan 0x21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Points : 261
    Points
    261
    Par défaut
    Mais de rien, n'oublis pas de définir ton post comme résolus pour aider d'autres personnes dans le même cas.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    Citation Envoyé par Ethan 0x21 Voir le message
    Bonsoir,

    C'est exa je l'est d'ailleur déjà implémenté, tu pourrais hacher via md5 par exemple lors de la création/(modification mot de passe)/(modification login) un champ indexé dans ta table MySQL via CREATE INDEX.

    Puis lors d'une connexion d'un users, tu hash via php le login et le mdp founis, puis tu lance une requete SQL pour récupérer le tuple associé avec le hash founis en paramétre.

    Cependant cette méthode ne fonctionne que pour la connexion d'un user, car par exemple pour rechercher des utilisateur dans un formulaire de recherche par exemple, il te manque le mot de passe pour creer les hashs, à moin d'appliquer une politique de login unique (uid) qui permettrai de ce passer simplement des mot de passe pour le haschage.

    Cdt
    A tu fait un test de performance pour comparer les différences de performance entre le hash pseudo + mdp et le simple pseudo ?

    Le simple fait d'ajouter un index sur la colonne pseudo ne suffirait-il pas ? Voir un index sur le pseudo + mdp ?

  6. #6
    Membre actif Avatar de Ethan 0x21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Points : 261
    Points
    261
    Par défaut
    A tu fait un test de performance pour comparer les différences de performance entre le hash pseudo + mdp et le simple pseudo ?
    C'est exa, à l'aide du client mysql fournit dans le paquage par défaut du serveur mysql de oracle, pour chaque requêtes effectués il y a un rendu du temps d'execution, la différence n'est pas flagrante pour de petites tables, mais il y a indéniablement une différence entre les deux.

    Le simple fait d'ajouter un index sur la colonne pseudo ne suffirait-il pas ? Voir un index sur le pseudo + mdp ?
    le probléme en l'occurence ici est qu'il peut y avoir des doublons du au fait que le login n'est pas un uid et que Mikaelo ne semble pas vouloir implémenter une politique du login unique.

    De ce fait un index unique n'est-il pas plus optimisé, qu'un index composé de plusieurs colonnes ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/12/2009, 20h22
  2. [SimpleXML] et recherche d'un élément par son attribut
    Par Tutotictac dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/03/2009, 16h39
  3. accéder à une page par pseudo et mot de passe
    Par chabeka dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2008, 13h40
  4. Réponses: 6
    Dernier message: 15/12/2005, 14h29
  5. Optimisation d'une recherche et mise à jour
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/01/2005, 18h38

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