From ba5d4181c0fb9074dc221fe7b6808d3b92f84b8b Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sun, 9 Jun 2002 20:47:07 +0000 Subject: [PATCH] rejouer (??? quel jargon mes amis!) le cookie de session, en jajascript, pour eviter vol de cookie facon Arno. --- ecrire/inc_presentation.php3 | 4 +++- inc-public.php3 | 4 ++++ spip_cookie.php3 | 13 +++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3 index 0fb3c03152..0b341bf1b1 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 fbb287c50e..23658c591d 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 799792eaff..6ed0e78184 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); -- GitLab