Le Sunday 29 May 2011 22:41:33 Emmanuel Seyman, vous avez écrit :
> * Alain Vaugham [25/05/2011 15:17] :
> > Dans /etc/php5/apache2/php.ini :
> > session.gc_maxlifetime = 1440
>
> Ce qui donne 24 mins alors que tu as déjà constaté qu'une session pouvait
> durer jusqu'à 28 mins.
>
> La machine serait elle une Debian, par hasard ? 

Oui, c'est une Squeeze.


> Si oui, de mémoire, les
> sessions sont purgées par un cron et une session durerait donc 24 mins +
> le temps jusqu'à la prochaine execution du cron en question.

Très intéressant ça! 

Pendant plusieurs jours j'ai fait varier session.gc_maxlifetime entre 3 mn et 
10 heures avec des résultats incohérents. Par exemple avec une valeur de 180 
secondes, au bout de 4 ou 5 minutes la session était toujours valide mais la 
période de validité était variable. Cela ne s'est produit qu'une fois après 
un restart d'Apache. La conservation ou pas en premier plan de l'affichage de 
la page entrait aussi dans mes tests... tout ça non reproductible.
Quand aux 10 heures, elles n'ont jamais été atteintes.

En cherchant à comprendre ces incohérences j'ai appris un peu plus.
Par exemple ce que je demande à phppgadmin - et plus tard à des formulaires 
cgi pour de la saisie - ne va pas dans le sens de la sécurité à cause de 
la notion de durée de session que je ne connaissais pas vraiment et dont je 
n'avais nul besoin de m'inquiéter n'utilisant jusque là que psql en mode 
console même à distance avec TLS/SSL.
J'ai trouvé une alternative intéressante mais à prendre avec 
précautions elle aussi. Il s'agit de rafraîchir automatiquement les sessions :
http://www.jjsworld.fr/blog/21-developpement/94-permettre-une-duree-de-session-illimitee-dans-une-application-web

Bref, toutes ces recherches m'ont à la fois éclairé et usé. Du coup avant hier 
j'ai installé pgadmin. Avec lui on peut supprimer le php et même l'apache qui 
est dessous. Ce n'est pas très fancy comme affichage et ça ne peut pas être 
mis entre toutes les mains tel quel mais ça colle assez bien à mon cahier des 
charges : je modifie les données manuellement dans une table que je pose sur 
la partie gauche de l'écran. J'étale les résultats des requêtes sur la partie 
droite.

Il ne manque plus que le rafraîchisement et la mise en page automatiques pour 
être comblé.

Je n'ai pas encore assez de recul depuis que j'ai installé pgadmin pour m'en 
contenter provisoirement mais il va sûrement me permettre d'attendre un peu 
pour avancer sur autre chose.

En tout cas, merci beaucoup Emmanuel pour ta réponse qui était loin d'être 
évidente à mettre en relation avec php dans le cas d'une Debian.

Je ne vais peut-être pas me jeter immédiatement dessus car si des gens 
beaucoup plus compétents que moi se sont évertués à complexifier à souhaits 
les sessions Php ou Apache, je me vois mal ne pas en tenir compte.

Ceci dit, l'usage de pgadmin n'est que temporaire.
A moins que je ne puisse pas afficher des données dynamiquement à distance 
avec une appli autre que php - et qui soit à ma portée - je vais sûrement 
revoir dans l'avenir ce cron.d/php5 purgeur de sessions.
J'ai bien noté qu'il faut tenir compte d'éléments qui nécessitent de limiter 
le temps d'une session. Sauf omission de ma part les voici :
1) réduction de la charge côté serveur
2) sécurisation du clavier/écran/souris côté client
3) sécurisation des données et leur transmission

Dans un VPN/extranet :
Pour le point 1) je ne sais pas encore l'évaluer mais ce sera faible.
Pour le point 2) je sais faire.
Pour le point 3) j'ai mis en place systématiquement un canal chiffré avec 
TLS/SSL grâce à un certificat X509. Je ne comprendrais donc pas qu'une 
session php doive être limitée dans le temps pour ce motif.


-- 
Alain Vaugham
Clef GPG : 0xD26D18BC
_________________________________
Linux mailing list
Linux@lists.parinux.org
http://lists.parinux.org/mailman/listinfo/linux

Répondre à