Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je me demande comment faire un autologin à partir d'une url qui serait envoyé à l'utilisateur. En gros je cherche un peu à faire comme un "vente privée" qui quand on reçoit un mail pour les nouvelles ventes, on peut cliquer sur vente en cours et on est automatiquement loggé.
Si vous avez une idées, je suis preneur
Hors ligne
il te faut généré une clef unique a chaque fois que tu fourni a l'url, lorsque la clef est fournie a l'appel de l'url, tu vérifie s'il y a une correspondance et hop logué sans oublié de supprimé la clef en question ....
perso, j'aime ce genre de système mais cela augmente le risque (bruteforce, par exemple), pense peut-être a limiter les options dispo sans se reloguer..
Hors ligne
C'est ce que je me disais... le soucis c'est que si je tue l'url au premier accès je ne permets plus l'accès futur à partir de la même url...
Qu'appelles-tu bruteforce?
Hors ligne
si ton url est http://example.tld/login/emailautologin/abcd1234
quelqu'un pourrait essayer http://example.tld/login/emailautologin/abcd1235 puis http://example.tld/login/emailautologin/1236 ... c'est juste que voilà c'est une autre manière plus simple de se connecter a un compte ... bien entendu c'est pareil que pour les tentatives de login ratée, les compter et mettre une limite peut-être intéressant.... mais en dehors de cela voilà
Hors ligne
regarde la fonction php uniqid()... ca fait beaucoup de test à faire si tu n'as pas de nouveaux compte toutes les secondes. Tu peux ajouter une sécurité supplémentaire avec le début de l'adresse mail. Genre :
obama4fc5f87 ...
Ça doit être suffisant pour ne pas avoir a bruler l'URL
Jean
Hors ligne
pour un jeton à usage unique il te faut procéder avec plusieurs ID en interne.
un id pour ta vente qui reste interne à ton système.
par exemple "Promo de chaussettes du 19/03/2011" que tu garde dans ta base.
ensuite pour chaque client tu génère un UUID (Universal Uniq ID) que tu garde dans ta base.
tu génère alors un jeton pour ton client MD5($Id_Vente . $user_name . "une phrase clef pour ton appli" . $user_uuid)
ce truc là va te donner une clef à rallonge particulièrement difficile à attaquer de façon brutale.
lorsque ton client arrive avec son jeton tu le compare aux jetons que tu régénéré par rapport à ta base.
une fois la vente finie tu jette l'ID de la vente. tous les jetons sont ainsi invalidés.
si tu veux exclure un client des ventes privée tu jette son UUID il ne pourra plus participer à aucun ventes.
Comme dit plus haut limite les droits de tes clients lorsqu'il son connecté via le jeton.
Par exemple n'accepte que de parcourir les articles de la ventes et de constituer un panier.
Lorsque le client veut passer à l'acte informe-le que pour des raison de sécurité il doit confirmer son identité en entrant son mots de passe.
tu déverrouille alors tout sont profil moyen de paiement etc.
Il faut que lorsque ton client arrive avec un jeton tu l'informe clairement qu'il est Identifié mais pas Authentifié.
A+JYT
Hors ligne