Carnet Wiki

bug abus de sessionnage

En bref : Avec : <inclure{head}><inclure{breadcrumb}><inclure{nav}><inclure{content}><inclure{aside}><inclure{bottom}> : si nav est sessionné, tous ceux aprés le sont. Si on désessionne ou enlève nav, ils ne le sont plus. Cf https://core.spip.net/issues/4235

Squelette principal :

<INCLURE{fond=inclure/test-contamination-shouldbesafe}>
<INCLURE{fond=inclure/test-contamination-contaminant}>
<INCLURE{fond=inclure/test-contamination-shouldbesafetoo}>

inclure/test-contamination-contaminant :

Vous êtes #SESSION{nom}

inclure/test-contamination-shouldbesafe :

HMMM ici ça devrait pas être sessionné !

inclure/test-contamination-shouldbesafetoo :

HMMMNNNNNN ici ça devrait pas être sessionné NON PLUS !

On constate que shouldbesafe est non sessionné, mais que shouldbesafetoo est sessionné : la compilation de contaminant « contamine » le compilateur qui « contamine » shouldbesafetoo.

Squelette-étude

Comme parametrer et evaluer_fond sont les principales fonctions intervenant dans les calculs de session, des logs de la succession des appels à ces 2 fonctions ont été réalisés et jolifiés pour un jeu de squelette.

Dans le squelette-étude principal, « suitedynamique », il y a un inclure dynamique supplémentaire, pour tester la contamination un inclure plus loin :

<INCLURE{fond=inclure/shouldbesafe}>
<INCLURE{fond=inclure/contaminant}>
<INCLURE{fond=inclure/shouldbesafetoo}>
<INCLURE{fond=inclure/shouldbesafetooencore}>

-  shouldbesafe, shouldbesafetoo et shouldbesafetooencore ne contiennent rien de sessionnant.
-  contaminant contient un

#SESSION{nom}

qui nécessite sessionnement
-  shouldbesafetoo et shouldbesafetooencore contiennnent chacun un inclure statique ET un inclure dynamique (4 inclure en tout).

-  le squelette principal est lui même inclu dynamiquement par un squelette d’appel « appeldynamique » pour éviter l’interférence des particularités de l’appel de la page principale.

Logs Suite d’inclures dynamiques - SANS FIX
Logs Suite d’inclures dynamiques - AVEC FIX

Les mêmes tests ont été faits mais avec une suite d’inclure statiques dans le squelette principal « suitestatique ». Et les logs n’ont pas été autant jolifiés :

« suitedynamique »

Logs Suite d’inclures statiques - SANS FIX
Logs Suite d’inclures statiques - AVEC FIX

On voit là que le fix1 n’est pas satisfaisant  : comme « contaminante » est inclue statiquement, son sessionnage devrait contaminer « suitestatique » qui devrait aussi être sessionnée. Ce n’est pas le cas.

Le fix 2 atteint totalement la cible pour les jeux de test des inclusions dynamiques et des inclusions statiques.

JLuc - Mise à jour :1er décembre 2018 à 09h54min