User authentification / session timeout?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Recif, 29 Mai 2013.

  1. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Bonjour,

    J'aimerai m'affranchir des cookies pour l'authentification utilisateur, je suis en train d'étudier les solution avec les sessions (php). Comment faites vous pour maintenir un login utilisateur actif après que l'utilisateur ait fermé son navigateur? ^Je ne souhaiterai pas que l'utilisateur se reconnecte à chaque fois qu'il réouvre son navigateur...
    Merci
     
  2. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 596
    J'aime reçus:
    0
    Ce n'est pas possible. Concrètement, les "sessions" sont des cookies.
    Leur durée de vie est simplement limitée à la session du navigateur.

    Pour conserver l'utilisateur enregistré, il faut forcément utiliser les cookies (ou le local storage, mais le problème reste le même).
     
  3. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 182
    J'aime reçus:
    351
    +1, cookie de session ou ?PHPSESSID (berk)
     
  4. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Ok, donc je suis obligé de stocker le mot de passe dans le cookie... Je croyais que c'était absolument à éviter. :(
     
  5. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 596
    J'aime reçus:
    0
    Non tu n'es pas obligé de stocker le mot de passe dans le cookie, loin de la.
    Il te faut stocker un paramètre qui te permettra de reconnaitre l'utilisateur à partir de son cookie. Cela ne doit pas être le mot de passe.

    L'idée est de crypter une chaine de caractères et de la mettre dans le cookie.

    Code:
    string_to_encrypt = "#{user.username}#{user.password}#{user.private_key}"
    cookie = ::BCrypt::Password.create(string_to_encrypt)
    
    Le code ci-dessus est du ruby. Cherche un peu si tu as besoin d'avoir cela dans un autre langage

    Ici, j'ai mis le username, le mot de passe et une "clé privée". Cette clé privée est une valeur unique générée aléatoirement par toi pour chaque utilisateur.
    Ainsi, même en connaissant le nom d'utilisateur et le mot de passe, on ne peut pas obtenir de token correct.

    Par la suite, pour identifier ton utilisateur, tu génère la chaine cryptée avec les valeurs que tu as dans ta base de données, et si les deux sont similaires, tu as le bon utilisateur.
    A côté de cela, personne ne peut mettre de fausse chaine.

    Une solution pas mal serait de mettre l'adresse ip de l'utilisateur dans le token. Ainsi, si quelqu'un obtient la valeur du cookie, il est inutilisable sur une autre connexion.
     
  6. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 182
    J'aime reçus:
    351
    Tu n'enregistres pas le mot de passe, juste un hash avec un salt au choix.

    Edit: grillé.
     
  7. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Ok, en fait c'est un peu comme mettre un second mot de passe quoi... Actuellement j'ai généré un mot de passe à partir d'une classe d'encryption basée sur 2 clés. Ca peut également coller alors? Car même en récupérant la chaine encryptée du mot de passe dans le cookie, personne ne pourra rien en faire normalement...
     
  8. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 596
    J'aime reçus:
    0
    Personne ne pourra obtenir le mot de passe en effet. Par contre, la personne pourra réinjecter cette chaine dans un cookie.
    D'ou ma suggestion de mettre l'adresse ip de l'utilisateur dans ton salt. Cela réduit les risques.
     
  9. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Ah oui, en effet... Par contre je ne comprends pas bien, si l'ip de l'utilisateur légitime change il ne pourra plus non plus se connecter? Je ne saisi pas trop le fonctionnement...
     
  10. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 596
    J'aime reçus:
    0
    Si l'ip de l'utilisateur change, il devra se reconnecter avec son nom d'utilisateur et son mot de passe en effet.
    Cependant, aujourd'hui en France, tous les FAI fournissent des IP qui restent les mêmes pour un client donné.
    L'adresse IP de l'utilisateur changera donc très rarement.
     
  11. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Donc si je résume: je récupère via le formulaire de login son nom d'utilisateur, son mot de passe et son ip. je valide l'association user/mot de passe et je fais un hash que j'intègre dans les infos utilisateur dans ma bdd. Je fais mon cookie avec tout ça. A chaque page où je veux contrôler si c'est bien l’utilisateur légitime, je récupère les infos du cookie et je contrôle user/mot de passe/hash dans l'enregistrement utilisateur. C'est bien ça?
     
  12. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 596
    J'aime reçus:
    0
    Oui. Sauf que l'IP, tu ne la transmet pas dans le formulaire. Tu la récupère juste côté serveur.
     
  13. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Oui oui, bien sûr. Mais ok pour le principe. Sinon une idée pour réduire les requêtes bdd à chaque controle?...
     
  14. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 596
    J'aime reçus:
    0
    Tu ne peut pas épargner la requête à ta base de données utilisateurs à chaque chargement de page.
     
  15. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    ok!
    Merci pour ton aide en tout cas.
     
  16. Dan_A
    Dan_A WRInaute discret
    Inscrit:
    21 Décembre 2005
    Messages:
    193
    J'aime reçus:
    0
    Je ne suis pas sûr que l'IP soit fixe pour tous les visiteurs en France. J'ai entre 1% (le plus souvent) et 10% (aujourd'hui par exemple) d'utilisateurs qui changent d'IP d'une requête à l'autre (souvent des mobiles ou des utilisateurs de mairie, lycée, grosses entreprises...).
     
  17. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 182
    J'aime reçus:
    351
  18. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Oui, mais ce que disais dmathieu c'est que l'ip attribuée reste attribuée un bon moment avant de changer.
    Sinon pour info j'ai mis en place le système de login/cookie etc. et tout fonctionne à merveille!
     
Chargement...
Similar Threads - User authentification session Forum Date
site pour trouver des pdf a diffuser et vendre en affiliation Rédaction web et référencement 16 Septembre 2022
Détecter arrêt user d'un script PHP ? Développement d'un site Web ou d'une appli mobile 28 Décembre 2021
[AIDE] Diffuser des publicités vidéo (pre-roll) avec Ad Manager Monétisation d'un site web 12 Mai 2021
Le nombre d'annonces que vous êtes autorisé à diffuser a été limité AdSense 29 Novembre 2019
En décembre 2019 changement de l'user agent de Googlebot Crawl et indexation Google, sitemaps 5 Octobre 2019
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 14 Septembre 2019
Quels ports accepter/refuser - serveur VPS. Administration d'un site Web 28 Août 2019
2 versions du code source en fonction du User Agent [Indexation / SEO] Crawl et indexation Google, sitemaps 25 Juin 2019
Le User-Agent google-speakr de Google Home et l'Assistant vocal Crawl et indexation Google, sitemaps 7 Février 2019
Ne jamais diffuser pour un mot clé à partir du moment qu'il est dans le terme de recherche AdWords 9 Septembre 2018
Sans user agent header 403 sur la home page Référencement Google 29 Mai 2018
(XHR)GET - https://raw.githubusercontent.com Développement d'un site Web ou d'une appli mobile 16 Juin 2017
Peut-on diffuser le lien d'une vidéo YouTube qui ne nous appartient pas ? YouTube, Google Images et Google Maps 12 Mars 2017
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 12 Janvier 2017
SEO : meilleure approche pour le User Generated Content Référencement Google 28 Mars 2016
Filtrer sur User-Agent Mozilla Google Analytics 25 Novembre 2015
Crawling en fonction des "User Agent" Crawl et indexation Google, sitemaps 20 Septembre 2015
Problème hacking Wordpress - fichiers wp-sample.php et wp-admin/wp-user.php Débuter en référencement 30 Avril 2014
php - Diffuser des infos à des utilisateurs spécifiques (amis, abonnés) Développement d'un site Web ou d'une appli mobile 17 Mars 2014
adwords accès dashboard et user Google : l'entreprise, les sites web, les services 3 Mars 2014