Bonsoir à tous
Suite aux réponses reçues à plusieurs questions posées sur ce forum, je suis en train d'implémenter la fonction "rester connecté" sur un site de la façon suivante:
1) le fichier .htaccess du répertoire "private" contient "Deny from all"
2) quand on accède à un fichier contenu dans ce répertoire ou un de ses sous-répertoires, cela provoque une erreur 404 qui est traitée par un programme PHP
2) ce programme vérifie l'existence du fichier que l'on cherche à atteindre et, s'il existe, vérifie que l'utilisateur est connecté avec l'option "rester connecté"
3) sinon il demande à l'utilisateur de donner son identifieur, son mot de passe et s'il désire rester connecté
4) après avoir vérifié le mot de passe et enregistré une valeur de contrôle dans une session, le programme affiche le fichier désiré, soit par un "include", soit par la fonction "readfile"

Ma question concerne la façon d'implémenter l'option "rester connecté":
Une façon simple est mettre le mot de passe en cookie, mais est-ce suffisamment sécurisé?
On peut mettre autre chose dans le cookie, mais est-ce que cela serait plus sécurisé? quel que soit la façon dont on implémente le verrou, il faut bien le stocker dans le navigateur du client...

Merci pour vos conseils
Salut Papy !

Je pense que ça dépends aussi de ton architecture. Si ton site est développé avec un framework client-side comme Angular, alors tes données proviennent généralement d'une API REST dans laquelle tu authentifies tes utilisateurs avec un token. Il suffit dans ce cas de stocker le token en question dans un cookie.

Ça fait longtemps que j'ai pas développé dans une architecture différente que celle-ci, donc je laisserai d'autres personnes compléter la réponse.

Je dirais que le point important en terme de sécurité, c'est l'obligation de chiffrer la connexion client-serveur avec HTTPS. Sans quoi, il est possible de voler des cookies hyper facilement sur les WIFI publique par exemple.
Salut papy Smiley cligne

Pas facile de sécuriser un "rester connecté"

Une des solutions est d'avoir un identifiant unique stocké quelque part dans ta bdd de ton côté, et dans l'ordi du user de l'autre côté. Soit en cookie, soit en local storage, il y a plusieurs solutions.

Ce qui est certains c'est que tu ne dois en AUCUN CAS stocker côté client les infos : Login, password

Amuses toi bien
Merci de vos réponses

@Anymah
Je suis trop vieux pour passer du temps à apprendre à utiliser des produits comme Angular ou autre. Le temps que je sache m'en servir, je ne serai plus là pour les utiliser effectivement.
Tout ce que je fais est produit à la mimine, le site en question date de 1999. Bien entendu je l'ai fait évoluer, mais c'est toujours la même architecture de base.

@pchlj
C'est effectivement le genre de chose que j'ai l'intention de faire.
Mais je vois mal en quoi cet "identifiant unique" est plus sécurisé que 'identifiant+mot de passe'.
N'importe qui ayant accès à l'ordinateur d'un utilisateur peut regarder le contenu des cookies et l'utiliser à volonté de toute façon, n'est-ce pas?
Je ne peux pas non plus me baser sur l'adresse ip, je ne pense pas que dans notre monde mobile l'adresse ip d'un utilisateur soit suffisamment stable pour être utilisable.
Alors un identifiant unique évite de stocker le vrai couple login mot de passe.
Bien sur quelqu'un sur la machine pourra utiliser la session ou relever cet identifiant, mais il n'aura pas les vrais infos de connexion.
Alors en effet il peut toujours copier la session ailleurs.
MAIS, une déconnexion ou une nouvelle action de connexion, va recréer cet identifiant unique qui donc ne sera plus utilisable par celui qui l'a volé Smiley cligne
Après il y a aussi les identifications fortes à deux facteurs Smiley cligne
OK! le truc c'est de renouveler l'identifiant à chaque connexion.
Ce que je pense faire:
1) une bdd contient la liste des identifiants "courants", avec une durée de vie pour chaque identifiant
2) une personne se connecte: je regarde si elle a un cookie correspondant à un identifiant connu. Sinon je vérifie son mot de passe
3) dans tous les cas je mets à jour le cookie et la bdd avec un nouvel identifiant
ce n'est certainement pas sûr à 100%, mais ça limite assez sérieusement les intrusions, d'autant que ce site n'a pas d'info très sensible: pas d'argent en jeu, tout juste la possibilité de consulter des documents réservés aux membres du groupe.
Votre avis?