From 29ddd32f3eb54927e65f91bdb9cdfadb8a1ab71c Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Wed, 26 Sep 2018 13:43:40 +0000
Subject: [PATCH] https://core.spip.net/issues/4166 : quand la globale
 filtrer_javascript vaut -1 (mode parano) il faut aussi proteger le html
 suspect dans l'espace public

---
 ecrire/inc/texte.php      | 16 +++++++++++++++-
 ecrire/inc/texte_mini.php |  2 +-
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index 6090a10d68..cdaef69dec 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -270,7 +270,10 @@ function typo($letexte, $echapper = true, $connect = null, $env = array()) {
 
 	// Dans l'espace prive on se mefie de tout contenu dangereux
 	// https://core.spip.net/issues/3371
-	if (isset($env['espace_prive']) and $env['espace_prive']) {
+	// et aussi dans l'espace public si la globale filtrer_javascript = -1
+	// https://core.spip.net/issues/4166
+	if ($GLOBALS['filtrer_javascript'] == -1
+	  or (isset($env['espace_prive']) and $env['espace_prive'] and $GLOBALS['filtrer_javascript']<=0)) {
 		$letexte = echapper_html_suspect($letexte);
 	}
 
@@ -423,6 +426,17 @@ function propre($t, $connect = null, $env = array()) {
 		return strval($t);
 	}
 
+	// Dans l'espace prive on se mefie de tout contenu dangereux
+	// avant echappement des balises <html>
+	// https://core.spip.net/issues/3371
+	// et aussi dans l'espace public si la globale filtrer_javascript = -1
+	// https://core.spip.net/issues/4166
+	if ($interdire_script
+		or $GLOBALS['filtrer_javascript'] == -1
+		or (isset($env['espace_prive']) and $env['espace_prive'] and $GLOBALS['filtrer_javascript']<=0)
+		or (isset($env['wysiwyg']) and $env['wysiwyg'] and $GLOBALS['filtrer_javascript']<=0)) {
+		$t = echapper_html_suspect($t, false);
+	}
 	$t = echappe_html($t);
 	$t = expanser_liens($t, $connect, $env);
 	$t = traiter_raccourcis($t);
diff --git a/ecrire/inc/texte_mini.php b/ecrire/inc/texte_mini.php
index 3c9609c28f..2544d9826c 100644
--- a/ecrire/inc/texte_mini.php
+++ b/ecrire/inc/texte_mini.php
@@ -473,7 +473,7 @@ function echapper_html_suspect($texte, $strict=true) {
 		if (!function_exists('attribut_html')) {
 			include_spip('inc/filtres');
 		}
-		$texte = "<mark title='".attribut_html(_T('erreur_contenu_suspect'))."'>⚠️</mark> ".$texte;
+		$texte = "<mark class='danger-js' title='".attribut_html(_T('erreur_contenu_suspect'))."'>⚠️</mark> ".$texte;
 	}
 
 	return $texte;
-- 
GitLab