From d192dab23f01a3958916826d8c42c8941cf39df0 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Thu, 6 Jan 2011 10:48:11 +0000
Subject: [PATCH] report de r16884 : bloquer les redirection absolues dans le
 formulaire de login, en prevoyant une constante pour les webmestres qui
 veulent desactiver cela pour des raisons qui leur appartiennent (ce qui
 permet de securiser en assurant tout de meme une continuite de fonctionnement
 pour ceux qui utilisaient malheureusement cette fonctionnalite).

---
 prive/formulaires/login.php | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/prive/formulaires/login.php b/prive/formulaires/login.php
index 3cfeb44760..c999804053 100644
--- a/prive/formulaires/login.php
+++ b/prive/formulaires/login.php
@@ -185,14 +185,21 @@ function formulaires_login_traiter_dist($cible="",$login="",$prive=null){
 
 	if ($cible) {
 		$cible = parametre_url($cible, 'var_login', '', '&');
-	} 
-	
-	// transformer la cible absolue en cible relative
-	// pour pas echouer quand la meta adresse_site est foireuse
-	if (strncmp($cible,$u = url_de_base(),strlen($u))==0){
-		$cible = "./".substr($cible,strlen($u));
+
+		// transformer la cible absolue en cible relative
+		// pour pas echouer quand la meta adresse_site est foireuse
+		if (strncmp($cible,$u = url_de_base(),strlen($u))==0){
+			$cible = "./".substr($cible,strlen($u));
+		}
+
+		// si c'est une url absolue, refuser la redirection
+		// sauf si cette securite est levee volontairement par le webmestre
+		elseif (preg_match(";^([a-z]+:)?//;Uims",$cible) AND !defined('_AUTORISER_LOGIN_ABS_REDIRECT')) {
+			$cible = "";
+		}
 	}
 
+
 	// Si on est admin, poser le cookie de correspondance
 	if ($GLOBALS['auteur_session']['statut'] == '0minirezo') {
 		include_spip('inc/cookie');
-- 
GitLab