source: spip-zone/_plugins_/htmlpurifier/inc/safehtml.php @ 112271

Last change on this file since 112271 was 112271, checked in by gouz@…, 3 years ago

on surcharge inc/texte.php pour redéfinir propre() et appliquer le filtrage avec echapper_html_suspect() en fin de traitement mais avant echappe_retour_modeles() : on lance le débat et si certains veulent tester, ils ont un plugin fonctionnel qui ne casse pas tout. Par cohérence : les fonctions de filtrage inc_echapper_html_suspect_dist() et echappe_anti_xss() effectue le même traitement. Version++

File size: 2.1 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2017                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13
14if (!defined("_ECRIRE_INC_VERSION")) return;
15
16
17function inc_safehtml($t) {
18        static $purifier;
19
20        include_spip('inc/memoization');
21        if (function_exists('cache_get')
22        AND $a = cache_get($cle = 'safehtml:'.md5($t)))
23                return $a;
24
25        include_spip('lib/HTMLPurifier.standalone');
26        include_spip('HTMLPurifier.extended');
27
28        $config = HTMLPurifier_Config::createDefault();
29
30        $config->set('Attr.EnableID', true);
31        $config->set('HTML.SafeIframe', true); 
32        $config->set('URI.SafeIframeRegexp', "%^http[s]?://[a-z0-9\.]*".$_SERVER['HTTP_HOST']."%iS" ); 
33       
34        $config->set('HTML.TidyLevel', 'none');
35        $config->set('Cache.SerializerPath', preg_replace(',/$,', '', realpath(_DIR_TMP)));
36        $config->set('Attr.AllowedFrameTargets', array('_blank'));
37        $config->set('Attr.AllowedRel', 'facebox,nofollow,print,external');
38 
39        $config->set('URI.AllowedSchemes', array ('http' => true, 'https' => true, 'mailto' => true, 'ftp' => true, 'nntp' => true, 'news' => true, 'tel' => true, 'tcp'=>true, 'udp'=>true, 'ssh'=>true,));
40       
41        $html = $config->getHTMLDefinition(true);
42        $html->manager->addModule('Forms');
43        $html->manager->registeredModules["Forms"]->safe = true;
44 
45        if (!isset($purifier))
46                $purifier = new HTMLPurifier($config);
47               
48   
49        // HTML Purifier prefere l'utf-8
50        if ($GLOBALS['meta']['charset'] == 'utf-8')
51                $t = $purifier->purify($t);
52        else
53                $t = unicode_to_charset($purifier->purify(charset2unicode($t)));
54
55        if (function_exists('cache_set'))
56                cache_set($cle, $t);
57
58        return $t;
59
60}
Note: See TracBrowser for help on using the repository browser.