Projet

Général

Profil

Anomalie #3807

[gestion sessions] : suppression de session inutilisée

Ajouté par Guillaume Fahrner il y a plus de 2 ans. Mis à jour il y a plus d'un an.

Statut:
Fermé
Priorité:
Haut
Assigné à:
Catégorie:
authentification
Version cible:
Début:
12/07/2016
Echéance:
% réalisé:

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 Voir - patch sur la version 3.1.1 (499 octets) Guillaume Fahrner, 18/07/2016 08:59

Révisions associées

Révision 23545 (diff)
Ajouté par cedric@yterium.com il y a plus d'un an

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

Révision 23546 (diff)
Ajouté par cedric@yterium.com il y a plus d'un an

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

Historique

#1 Mis à jour par Guillaume Fahrner il y a plus de 2 ans

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 Mis à jour par b b il y a plus de 2 ans

Salut Guillaume, tu peux fournir un patch stp ?

#3 Mis à jour par b b il y a plus de 2 ans

  • Version cible mis à 3.1

#4 Mis à jour par Guillaume Fahrner il y a plus de 2 ans

Hop, le patch :-)

#5 Mis à jour par marcimat 🌈 il y a plus d'un an

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

#6 Mis à jour par marcimat 🌈 il y a plus d'un an

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 Mis à jour par guytarr ° il y a plus d'un an

  • Assigné à mis à cedric -

#8 Mis à jour par Anonyme il y a plus d'un an

  • Statut changé de Nouveau à Fermé
  • % réalisé changé de 0 à 100

Appliqué par commit r23545.

#9 Mis à jour par cedric - il y a plus d'un an

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 Mis à jour par b b il y a plus d'un an

  • Resolution mis à fixed

Formats disponibles : Atom PDF