openMairie.org | Démonstration | Documentation | Forum

Prop0073 - Modifications autour de la gestion de session

Porteur principal : Laurent Groleau

Porteur secondaire : Stéphane Vicedo

Résumé

Quatre modifications pour rendre la session plus robuste:

  • modifier l’identifiant de session après une authentification réussie, et ne pas changer son nom si elle est déjà active (warning PHP 7)
  • regénérer l’identifiant de session à chaque requête et limiter sa durée de vie à 15mn
  • positionner les paramètres de sécurisation des cookies recommandés en HTTP
  • proposer l’option de n’autoriser que le HTTPS, option accessible uniquement depuis le code PHP

Motivation

Mieux protéger les sessions.

Pré-requis

aucun

Proposition et implémentation

Branche faite depuis OM 4.9.2 : .../openmairie_exemple/branches/prop0073-gestion_session/

  • R4530 & 31: ne pas changer le nom d’une session déjà active
  • R4532: regénérer l’identifiant de session à chaque requête et limiter sa durée de vie à 15mn
  • R4533: positionner les paramètres de sécurisation des cookies recommandés en HTTP
  • R4534: proposer l’option de n’autoriser que le HTTPS, par défaut à faux pour la continuité fonctionnelle
    Reste à faire :
    • option https obligatoire accessible uniquement depuis le code PHP
    • mettre à jour la documentation d’installation pour inciter à activer l’option https dans config.inc.php

Risques

Reste à tester:

  • la non-régression sur OM et sur une application
  • l’option de cookie SameSite avec PHP7.3
  • l’effet de la durée de session sur le Garbage Collector : test de charge automatisé
  • le risque de perte de session sur réseau radio
1 J'aime

MISE A JOUR

Résumé

Cinq modifications pour rendre la session plus robuste:

  • modifier l’identifiant de session après une authentification réussie, et ne pas changer son nom si elle est déjà active (warning PHP 7)
  • regénérer l’identifiant de session à chaque requête
  • limiter la durée de vie de session à 15mn, configurable dans dyn/config.inc.php, avec alerte JavaScript quand le temps maximum est atteint
  • positionner les paramètres de sécurisation des cookies recommandés en HTTP
  • proposer l’option de n’autoriser que le HTTPS, configurable dans dyn/config.inc.php

Motivation

Mieux protéger les sessions.

Pré-requis

aucun

Proposition et implémentation

Branche faite depuis OM 4.9.2 : .../openmairie_exemple/branches/prop0073-gestion_session/

  • R4530 & 31 : ne pas changer le nom d’une session déjà active
  • R4532: regénérer l’identifiant de session à chaque requête et limiter sa durée de vie à 15mn
  • R4533: positionner les paramètres de sécurisation des cookies recommandés en HTTP
  • R4534: proposer l’option de n’autoriser que le HTTPS, par défaut à faux pour la continuité fonctionnelle
  • R4572 :

Risques

Tests manuels effectués sur le framework (liste, sous-formulaire, TinyMCE, PDF, SIG).
L’effet de la durée de session sur le Garbage Collector est de toutes façons plus favorable qu’avec un temps de session « infini », ce code ne change donc pas la situation.

Les tests automatiques passés en R4534 General_Test_Report.pdf (109,9 Ko) sont à refaire pour prendre en compte le dernier commit et le réalignement OM 4.10-dev.

1 J'aime

Bonjour,

En pièce jointe le résultat de l’exécution des tests sur notre plateforme.
Résultat : 54/57
3 fails explicables :

15:55:15 Synchronisation des utilisateurs avec un annuaire LDAP :: On teste… | FAIL |
15:57:31 Page should have contained text ‹ Il y a 4 utilisateur(s) présent(s) dans l’annuaire et non présent(s) dans la base => 4 ajout(s) › but did not.
15:57:31 ------------------------------------------------------------------------------
=> Notre plateforme n’accède pas au web

16:03:59 Pagination en formulaire :: Vérifie la pagination sur un formulaire. | FAIL |
16:04:02 NoSuchElementException: Message: Cannot locate option with value: 15
16:04:02 ------------------------------------------------------------------------------
=> Fail de la branche OM4.10-dev

16:04:02 Pagination en sous-formulaire :: Vérifie la pagination sur un sous… | FAIL |
16:04:09 NoSuchElementException: Message: Cannot locate option with value: 15
16:04:09 ------------------------------------------------------------------------------
=> Idem

PROP73 Résultat test.txt (16,0 Ko)
Ici l’exécution témoin de la 4.10.0-dev : 4.10.0-dev Résultat test.txt (16,1 Ko)

1 J'aime