diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3 index 0fb3c0315252f1d9e54cee824342c151f726b8f1..0b341bf1b169d32969f13af87854f7ed3c61c697 100644 --- a/ecrire/inc_presentation.php3 +++ b/ecrire/inc_presentation.php3 @@ -1528,7 +1528,9 @@ function fin_html() { <p align='right'><font face="Verdana, Arial, Helvetica, sans-serif" size='2'> <a href='http://www.uzine.net/spip'>SPIP <?php echo $spip_version_affichee; ?></a> est distribué <a href='gpl.txt'>sous licence GPL</a>.</p> -</body></html> +<?php if ($GLOBALS['spip_session']) { + echo '<script src="../spip_cookie.php3?rejoue=oui"></script>'; +} ?></body></html> <?php flush(); } diff --git a/inc-public.php3 b/inc-public.php3 index fbb287c50e4b39241d301fcced55cdfd455952b7..23658c591d4c2624a3010b81c0e1833c70b668ed 100644 --- a/inc-public.php3 +++ b/inc-public.php3 @@ -319,6 +319,10 @@ if (($admin_ok OR ($auteur_session['statut'] == '0minirezo')) AND !$flag_preserv echo "</form>\n"; } +// protection contre tentative de piratage de cookie de session +if ($spip_session) { + echo '<script src="spip_cookie.php3?rejoue=oui"></script>'; +} // // Gestion des statistiques par article diff --git a/spip_cookie.php3 b/spip_cookie.php3 index 799792eaff26672043ce231d655695dced91d47d..6ed0e78184ae7c87cb8b321b5ff3efde9e8a5e5a 100644 --- a/spip_cookie.php3 +++ b/spip_cookie.php3 @@ -6,6 +6,19 @@ include_ecrire ("inc_meta.php3"); include_ecrire ("inc_session.php3"); +// rejoue le cookie pour renouveler spip_session +if ($rejoue==oui) { + if (verifier_session($spip_session)) { + $cookie = creer_cookie_session($auteur_session); + supprimer_session($spip_session); + setcookie ('spip_session', $spip_session, time() - 24 * 7 * 3600); + setcookie ('spip_session', $cookie, time() + 24 * 7 * 3600); + @header('Content-Type: text/javascript') + echo " \n"; // ne pas renvoyer un fichier vide, ca fait ramer. + exit; + } +} + // tentative de login if ($cookie_session == "non") { supprimer_session($spip_session);