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&eacute; <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);