Project

General

Profile

Anomalie #3807

[gestion sessions] : suppression de session inutilisée

Added by Guillaume Fahrner over 3 years ago. Updated over 2 years ago.

Status:
Fermé
Priority:
Haut
Assignee:
Category:
authentification
Target version:
Start date:
07/12/2016
Due date:
% Done:

100%

Resolution:
fixed
Navigateur:

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']) ) {

session.php.spip311_r22913.patch View - patch sur la version 3.1.1 (499 Bytes) Guillaume Fahrner, 07/18/2016 08:59 AM

Associated revisions

Revision 23545 (diff)
Added by cedric@yterium.com over 2 years ago

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

Revision 23546 (diff)
Added by cedric@yterium.com over 2 years ago

Report de r23545 : 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 3 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 3 years ago

Salut Guillaume, tu peux fournir un patch stp ?

#3 Updated by b b over 3 years ago

  • Target version set to 3.1

#4 Updated by Guillaume Fahrner over 3 years ago

Hop, le patch :-)

#5 Updated by marcimat 🌈 over 2 years ago

Il est vidé à quel moment ce répertoire de sessions d'ailleurs ?

#6 Updated by marcimat 🌈 over 2 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 ° over 2 years ago

  • Assignee set to cedric -

#8 Updated by Anonymous over 2 years ago

  • Status changed from Nouveau to Fermé
  • % Done changed from 0 to 100

Appliqué par commit r23545.

#9 Updated by cedric - over 2 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 over 2 years ago

  • Resolution set to fixed

Also available in: Atom PDF