X-Git-Url: http://git.cyclocoop.org/?p=lhc%2Fweb%2Fclavette_www.git;a=blobdiff_plain;f=www%2Fecrire%2Finc%2Ftexte_mini.php;h=8171342c745b4d737d3154fcf12e99299764de5b;hp=b0aab8a33ab9d19f54755b577e08f4009fd63f67;hb=cc641eb476987612f6d6df1a5417c1c5582a8ab8;hpb=7d84a490677fb716a1fd4df260f8eab35f6a8506 diff --git a/www/ecrire/inc/texte_mini.php b/www/ecrire/inc/texte_mini.php index b0aab8a..8171342 100644 --- a/www/ecrire/inc/texte_mini.php +++ b/www/ecrire/inc/texte_mini.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. * @@ -381,15 +381,52 @@ function echapper_faux_tags($letexte){ $letexte = ""; while (count($textMatches)) { // un texte a echapper - $letexte .= str_replace(array("<"),array('<'),array_shift($textMatches)); + $letexte .= str_replace("<",'<',array_shift($textMatches)); // un tag html qui a servit a faite le split $letexte .= array_shift($textMatches); } return $letexte; } -// Securite : utiliser SafeHTML s'il est present dans ecrire/safehtml/ -// http://doc.spip.org/@safehtml +/** + * Si le html contenu dans un texte ne passe pas sans transformation a travers safehtml + * on l'echappe + * si safehtml ne renvoie pas la meme chose on echappe les < en < pour montrer le contenu brut + * + * @param string $texte + * @return string + */ +function echapper_html_suspect($texte){ + if (strpos($texte,'<')===false OR strpos($texte,'=')===false) + return $texte; + + // on teste sur strlen car safehtml supprime le contenu dangereux + // mais il peut aussi changer des ' en " sur les attributs html, + // donc un test d'egalite est trop strict + if (strlen(safehtml($texte))!==strlen($texte)){ + $texte = str_replace("<","<",$texte); + } + + return $texte; +} + + +/** + * Sécurise un texte HTML + * + * Échappe le code PHP et JS. + * Applique en plus safehtml si un plugin le définit dans inc/safehtml.php + * + * Permet de protéger les textes issus d'une origine douteuse (forums, syndications...) + * + * @filtre + * @link http://www.spip.net/4310 + * + * @param string $t + * Texte à sécuriser + * @return string + * Texte sécurisé +**/ function safehtml($t) { static $safehtml;