From e1f567479d3c985fd70c05c76b4c0529b41d5408 Mon Sep 17 00:00:00 2001 From: "cedric@yterium.com" <> Date: Wed, 27 Jul 2011 21:12:46 +0000 Subject: [PATCH] Upload d'un svg : remplacer le test sur le statut auteur par un appel a autoriser(televerser,script) qui peut etre deroge dans un cron + ref biblio sur la purification SVG Par ailleurs, si on sanitize SVG pour eviter les scripts quand l'auteur n'est pas de confiance, il faut en faire autant sur du HTML => sanitization du HMTL sur le meme principe, dans les memes conditions (bruno, emmanuel) --- .gitattributes | 1 + metadata/html.php | 38 ++++++++++++++++++++++++++++++++++++++ metadata/svg.php | 8 ++++++-- plugin.xml | 2 +- 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 metadata/html.php diff --git a/.gitattributes b/.gitattributes index e0d56c6d..91e93c77 100644 --- a/.gitattributes +++ b/.gitattributes @@ -105,6 +105,7 @@ lang/medias_zh.php -text /medias_fonctions.php -text /medias_pipelines.php -text metadata/flv.php -text +metadata/html.php -text metadata/image.php -text metadata/svg.php -text metadata/swf.php -text diff --git a/metadata/html.php b/metadata/html.php new file mode 100644 index 00000000..8ca884b6 --- /dev/null +++ b/metadata/html.php @@ -0,0 +1,38 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2011 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined('_ECRIRE_INC_VERSION')) return; +include_spip('inc/autoriser'); + +/** + * enlever les scripts de html si necessaire + * on utilise safehtml + * + * @param string $file + * @return array + */ +function medata_html_dist($file){ + $meta = array(); + + // Securite si pas autorise : virer les scripts et les references externes + // sauf si on est en mode javascript 'ok' (1), cf. inc_version + if ($GLOBALS['filtrer_javascript'] < 1 + AND !autoriser('televerser','script')) { + $texte = spip_file_get_contents($file); + include_spip('inc/texte'); + $new = trim(safehtml($texte)); + // petit bug safehtml + if ($new != $texte) ecrire_fichier($file, $new); + } + + return $meta; +} \ No newline at end of file diff --git a/metadata/svg.php b/metadata/svg.php index 022233d1..0071e126 100644 --- a/metadata/svg.php +++ b/metadata/svg.php @@ -11,9 +11,13 @@ \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; +include_spip('inc/autoriser'); /** * Determiner les dimensions d'un svg, et enlever ses scripts si necessaire + * on utilise safehtml qui n'est pas apropriee pour ca en attendant mieux + * cf http://www.slideshare.net/x00mario/the-image-that-called-me + * http://heideri.ch/svgpurifier/SVGPurifier/index.php * * @param string $file * @return array @@ -24,10 +28,10 @@ function medata_svg_dist($file){ $texte = spip_file_get_contents($file); - // Securite si pas admin : virer les scripts et les references externes + // Securite si pas autorise : virer les scripts et les references externes // sauf si on est en mode javascript 'ok' (1), cf. inc_version if ($GLOBALS['filtrer_javascript'] < 1 - AND $GLOBALS['visiteur_session']['statut'] != '0minirezo') { + AND !autoriser('televerser','script')) { include_spip('inc/texte'); $new = trim(safehtml($texte)); // petit bug safehtml diff --git a/plugin.xml b/plugin.xml index dbab03dc..ceb242f7 100644 --- a/plugin.xml +++ b/plugin.xml @@ -2,7 +2,7 @@ <nom>Medias</nom> <auteur>Collectif SPIP, Cedric Morin & Romy Duhem-Verdiere pour la mediatheque</auteur> <icon>prive/themes/spip/images/portfolio-32.png</icon> - <version>2.0.5</version> + <version>2.1.0</version> <version_base>0.14.0</version_base> <etat>test</etat> <slogan>Gestion des medias dans SPIP</slogan> -- GitLab