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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Confirmation/Activation d'un compte via email


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Confirmation/Activation d'un compte via email
    Bonjour,

    Je me pose des questions sur le fonctionnement des mails de confirmation, càd de ces mails qu'on reçoit en s'inscrivant sur un site et qui permettent de valider l'intention d'inscription du membre, l'existence de son adresse mail et donc d'activer la création du compte.

    J'ai pris connaissance du tuto de M. Gut mais comme il date de 2008, je ne sais pas si la méthode est toujours celle que les développeurs privilégient aujourd'hui, et surtout, je suis inquiétée par la sécurité des scripts proposés comme il y est fait usage de superglobales ($_POST, $_GET)...

    Bref, je viens vers vous avant tout pour un questionnement relatif à la philosophie de fonctionnement du script que j'ai à créer.


    Que puis-je faire de mieux que :

    - stocker dans une table de ma DB une clé aléatoire qui se génère à l'inscription du membre, avec en plus une colonne "confirmation" de type BOOL
    - envoyer au membre un email contenant un lien avec en paramètres (get) l'id du membre et sa clé aléatoire ; lien qui dirige vers un script qui récupère ces données, les traite en comparant ce qui est indiqué dans l'url et dans la DB, et fasse passer la colonne confirmation de FALSE à TRUE si les champs matchent ; puis qui redirige vers la page de connexion du site.

    Avec une telle méthode, j'exploite le get, dont on dit qu'il faut se méfier par faute de la faille XSS.
    Est-ce qu'une telle méthode est insécure (même si on passe par une messagerie, elle même protégée par email & mdp) ? trop simpliste? trop complexe? est-ce que ça a du sens de stocker des données pareilles dans la DB pour le maigre usage qu'on en fait?

    Quelle est selon vous la meilleure méthode pour parvenir à activer un compte?

    Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Une faille XSS peut avoir lieu quand un site affiche des données externes sans contrôle : une personne malveillante peut alors envoyer un lien contenant du code piégé à l'utilisateur.
    Ici on n'affiche pas ce qu'on a reçu donc il n'y a pas de problème.

    En complément de ce que fais déjà le script, tu peux ajouter une date limite pour la validation.

    est-ce que ça a du sens de stocker des données pareilles dans la DB pour le maigre usage qu'on en fait?
    Je n'ai pas trop compris cette question. C'est toi qui voit si tu veux valider l'email de l'utilisateur ou pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ok, merci pour ces précisions, Sabotage !
    Je suis contente que la logique de fonctionnement du script paraisse tenir la route et ne semble non sécurisée de prime abord.
    Merci pour l'idée d'une date de validation, c'est intelligent, je vais p-e mettre ça en place.

    Pour la dernière question, je me demandais si le fait de stocker la clé aléatoire dans la DB avait du sens puisqu'elle ne servait que pour et lors de la création du compte. Mais je ne me vois pas stocker ça dans un cookie. Ce n'est pas cette petite colonne qui va altérer les perfs de l'appli a priori
    Il n'empêche que vous pourriez avoir une solution plus pertinente... (P-e un chron qui viderait la table toutes les semaines, ce qui rejoint par ailleurs la limite pour la date de validation...)

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Citation Envoyé par -Reka- Voir le message
    Il n'empêche que vous pourriez avoir une solution plus pertinente... (P-e un chron qui viderait la table toutes les semaines, ce qui rejoint par ailleurs la limite pour la date de validation...)
    ou à chaque accès en écriture, tu nettoies la table des données périmées
    Et après chaque validation de compte tu peux aussi supprimer les données (dans ce domaine, il vaut mieux faire attention avant de supprimer les logs d'ouverture, d'activation ou de suppression de compte...)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ok, j'intègre !
    Merci pour vos retours, c'est précieux.

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

Discussions similaires

  1. activation compte par email de confirmation PHP-ODBC
    Par ju0123456789 dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2008, 14h33
  2. [LDAP] Dévérouiller/supprimer un compte via JNDI
    Par nesbla dans le forum Sécurité
    Réponses: 3
    Dernier message: 24/09/2006, 19h50
  3. Réponses: 5
    Dernier message: 19/09/2006, 21h51
  4. [Librairies] Comment uploader un fichier via email ?
    Par pdtor dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/05/2006, 11h33
  5. Confirmation d'envoi de mail Via Access
    Par Hamdi dans le forum Access
    Réponses: 2
    Dernier message: 01/02/2006, 13h14

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