Anomalie #3807
[gestion sessions] : suppression de session inutilisée
100%
Description
Lors de l'authentification d'un utilisateur un nouveau fichier de session est créé et tous les fichiers des sessions existants sont mis à jour à cause du changement des champs "maj" et "date_session". Effet de bort : si un utilisateur s'authentifie en boucle sans jamais se délogger le répertoire tmp/sessions/ se rempli sans jamais être vidé.
Le problème se situe ici :
https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/session.php#L472
L'idée proposé pour résoudre ce problème consiste à comparer plus finement les sessions avant de les mettre à jour :
ajout de la fonction :
/** * Comparer deux sessions * */ function comparer_sessions($a, $b) { if ($a == $b) { return true; } unset($a['maj'], $a['date_session']); unset($b['maj'], $b['date_session']); return $a == $b; }
et de modifier https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/session.php#L472 pour l'utiliser :
if ( ! comparer_sessions($auteur_session, $GLOBALS['visiteur_session']) ) {
Associated revisions
Fix #3807 : limiter le nombre de sessions maxi d'un auteur quand on en ouvre une nouvelle ou quand on actualise les sessions
Si plus que le seuil defini par la constante _NB_SESSIONS_MAX les plus anciennes sont supprimees
History
#1
Updated by Guillaume Fahrner over 4 years ago
Il faut aussi décommenter https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/session.php#L216 pour que les vieilles sessions soit bien supprimées.
#2
Updated by b b over 4 years ago
Salut Guillaume, tu peux fournir un patch stp ?
#3
Updated by b b over 4 years ago
- Target version set to 3.1
#4
Updated by Guillaume Fahrner over 4 years ago
- File session.php.spip311_r22913.patch View added
Hop, le patch :-)
#5
Updated by marcimat 🌻 about 4 years ago
Il est vidé à quel moment ce répertoire de sessions d'ailleurs ?
#6
Updated by marcimat 🌻 about 4 years ago
De ce que je lis seule la fonction supprimer_sessions()
nettoie les sessions, et est appelée seulement lorsque l'utilisateur se déconnecte (action/logout > $session(id auteur)).
Du coup, je ne vois pas en quoi le patch améliorerait les choses ?
À moins qu'une tâche cron puisse passer nettoyer le répertoire de session également en plus. (mais il n'y en a pas actuellement).
#7
Updated by guytarr ° almost 4 years ago
- Assignee set to cedric -
#8 Updated by Anonymous almost 4 years ago
- Status changed from Nouveau to Fermé
- % Done changed from 0 to 100
Appliqué par commit r23545.
#9
Updated by cedric - almost 4 years ago
Le nombre maxi de session d'un auteur est maintenant limité et vérifié à l'identification initiale et lors de la mise à jour d'une session
#10
Updated by b b almost 4 years ago
- Resolution set to fixed