Avertissement
Ce système ouvre une faille de sécurité :
Si quelqu’un utilise ma machine, il peut se connecter à ma place.
Principe
Simple comme bonjour, ou presque, il suffit de rallonger la durée de vie du cookie de session, sur demande de l’utilisateur.
Mise en place
Liste des fichiers à modifier :
- ecrire/mes_options.php3 [1] : Ajout d’une variable globale permettant d’autoriser l’autologin.
<?php
...
$GLOBALS['autologin'] = true;
...
?>
Ainsi, le webmaster peut désactiver temporairement l’autologin en supprimant la variable globale ’autologin’ ou en lui attribuant la valeur ’false’
- inc-login.php3 : Ajout d’une case à cocher ’Se souvenir du mot de passe’. Insérer le code suivant :
...
echo "<input type='hidden' name='next_session_password_md5' value=''>\n";
if ($GLOBALS['autologin']) echo "<label><b>Se souvenir de votre mot de passe</b> :</label><input type='checkbox' name='memorise_login' />\n";
echo "<div align='right'><input type='submit' class='spip_bouton' name='submit' value='Valider'></div>\n";
...
- spip_cookie.php3 : Rallongement de la durée de vie du cookie de session. Remplacer les lignes contenant :
spip_setcookie('spip_session', $cookie_session);
par
$duree_autologin = $memorise_login == 'on' AND $GLOBALS['autologin'] ? time() + 3600 * 24 * 14 : "";
spip_setcookie('spip_session', $cookie_session, $duree_autologin);
et :
spip_setcookie('spip_session', $cookie);
par
$duree_autologin = $memorise_login == 'on' AND $GLOBALS['autologin'] ? time() + 3600 * 24 * 14 : "";
spip_setcookie('spip_session', $cookie, $duree_autologin);
à noter que la durée proposée est de 14 jours. On peut souhaiter raccourcir ou rallonger cette durée en remplaçant la valeur 14 par une autre...
à partir de la version 1.6, il faut aussi ajouter une ligne dans le fichier de langue. Exemple :
Dans ecrire/lang/spip-fr.php3 [2] :
'pass_se_souvenir' => 'Se souvenir de votre mot de passe',
et dans ce cas, on remplacera dans le fichier inc-login.php3 la ligne :
if ($GLOBALS['autologin']) echo "<label><b>Se souvenir de votre mot de passe</b> :</label><input type='checkbox' name='memorise_login' />\n";
par la ligne :
if ($GLOBALS['autologin']) echo "<label><b>"._T('pass_se_souvenir')."</b> :</label><input type='checkbox' name='memorise_login' />\n";
Usage
Lors d’une demande de login, l’utilisateur aura la possibilité de demander au système de se souvenir du mot de passe.
- S’il coche la case, sa session persistera pour la durée définie.
- S’il ne coche pas la case ou qu’il fait un ’logout’, le cookie de session sera détruit et il devra s’authentifier de nouveau à l’avenir.
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |