X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fecrire%2Finc%2Ffiltres.php;h=5223d09872b00033e9febc7f0edd3d334ccc2593;hb=9bbff73a71a636a626a1be365cbf48c07f1f7220;hp=ae61ab252a41fc17d81861fe39f52013270f66eb;hpb=8310d65063cd6c3198978cb61b71643feb4812cc;p=lhc%2Fweb%2Fwww.git diff --git a/www/ecrire/inc/filtres.php b/www/ecrire/inc/filtres.php index ae61ab25..5223d098 100644 --- a/www/ecrire/inc/filtres.php +++ b/www/ecrire/inc/filtres.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2014 * + * Copyright (c) 2001-2016 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -419,6 +419,19 @@ function filtrer_entites($texte) { return $texte; } +/** + * Version securisee de filtrer_entites + * @param string $t + * @return string + */ +if (!function_exists('filtre_filtrer_entites_dist')) { + function filtre_filtrer_entites_dist($t) { + include_spip('inc/texte'); + return interdire_scripts(filtrer_entites($t)); + } +} + + // caracteres de controle - http://www.w3.org/TR/REC-xml/#charsets // http://doc.spip.org/@supprimer_caracteres_illegaux function supprimer_caracteres_illegaux($texte) { @@ -426,7 +439,7 @@ function supprimer_caracteres_illegaux($texte) { static $to = null; if (is_array($texte)) { - return array_map('corriger_caracteres_windows', $texte); + return array_map('supprimer_caracteres_illegaux', $texte); } if (!$to) $to = str_repeat('-', strlen($from)); @@ -2507,8 +2520,10 @@ function encoder_contexte_ajax($c,$form='', $emboite=NULL, $ajaxid='') { if (!function_exists('calculer_cle_action')) include_spip("inc/securiser_action"); - $cle = calculer_cle_action($form.(is_array($c)?serialize($c):$c)); - $c = serialize(array($c,$cle)); + + $c = serialize($c); + $cle = calculer_cle_action($form . $c); + $c = "$cle:$c"; // on ne stocke pas les contextes dans des fichiers caches // par defaut, sauf si cette configuration a ete forcee @@ -2575,10 +2590,20 @@ function decoder_contexte_ajax($c,$form='') { if (function_exists('gzdeflate') && function_exists('gzinflate')) $c = @gzinflate($c); } - list($env, $cle) = @unserialize($c); - if ($cle == calculer_cle_action($form.(is_array($env)?serialize($env):$env))) - return $env; + // extraire la signature en debut de contexte + // et la verifier avant de deserializer + // format : signature:donneesserializees + if ($p = strpos($c,":")){ + $cle = substr($c,0,$p); + $c = substr($c,$p+1); + + if ($cle == calculer_cle_action($form . $c)) { + $env = @unserialize($c); + return $env; + } + } + return false; }