En bref, je développe un moteur de rapport interne. Il est entièrement basé sur le web (utilisant PHP et diverses techniques AJAX) et interprète les données stockées dans une base de données MySQL par notre logiciel de production. Il fonctionne sur un serveur Ubuntu 8.04 et tous les employés ont un compte utilisateur Linux sur cette machine. J'ai mis en place un système de connexion en utilisant pam_auth qui force un utilisateur à se connecter avec son compte d'utilisateur linux et détermine s'il appartient ou non au groupe approprié pour accéder à des rapports particuliers.PHP pam_auth et les cookies
Cette partie fonctionne très bien, mon problème ici est d'ajouter une fonction "se souvenir de moi" en utilisant des cookies. Je voudrais que les utilisateurs aient un cookie de 30 jours juste pour leur épargner du temps et l'aggravation d'avoir à se connecter chaque fois que leur session expire. J'ai écrit la partie «se souvenir de moi» du code et il stocke le cookie très bien. Je stocke seulement leur nom d'utilisateur et un hachage md5 de leur mot de passe. Le problème vient ici quand il est temps de les ré-authentifier. Normalement, je ferais simplement cela en comparant le nom d'utilisateur stocké avec un mot de passe de cet utilisateur de la base de données. Ce qui complique les choses, c'est que je n'ai pas directement accès aux noms d'utilisateur et aux mots de passe. Ils sont tous stockés dans/etc/passwd et/etc/shadow et les connexions sont gérées par le module PAM. pam_auth attend un nom d'utilisateur en texte brut et un mot de passe en texte brut.
Il semble que mes seules alternatives sont soit de stocker le mot de passe en texte brut, soit avec un cryptage réversible, mais je n'aime pas particulièrement ces idées.
Y a-t-il de meilleures solutions ici?
Existe-t-il des problèmes pouvant survenir en définissant la durée de vie de la session sur 2592000 (30 jours)? – DWilliams
Je n'en connais aucune et je ne pense pas que la documentation en note, mais je n'ai jamais essayé d'avoir une session PHP aussi longue. – jlamp