Skip to content
Extraits de code Groupes Projets
Valider a9989466 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

#3371 (suite de r22428) on complete la fonction echapper_html_suspect pour...

 #3371 (suite de r22428) on complete la fonction echapper_html_suspect pour permettre de l'appeler sur du contenu qui passe par propre sans declencher trop de faux positif en lui ajoutant un argument $strict
+ appel de la fonction en filtre dans l'affichage de #PGP
+ chaine de langue pour signaler le texte mal forme quand on l'echappe
(et du coup on integre un emoji unicode dans le code pour afficher un signe warning qui porte le message en title)
parent f08e04d0
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -449,10 +449,19 @@ function echapper_faux_tags($letexte) {
* si safehtml ne renvoie pas la meme chose on echappe les < en &lt; pour montrer le contenu brut
*
* @param string $texte
* @param bool $strict
* @return string
*/
function echapper_html_suspect($texte) {
if (strpos($texte, '<') === false or strpos($texte, '=') === false) {
function echapper_html_suspect($texte, $strict=true) {
if (!$texte
or strpos($texte, '<') === false or strpos($texte, '=') === false) {
return $texte;
}
// quand c'est du texte qui passe par propre on est plus coulant tant qu'il y a pas d'attribut du type onxxx=
// car sinon on declenche sur les modeles ou ressources
if (!$strict and
(strpos($texte,'on') === false or !preg_match(",<\w+.*\bon\w+\s*=,UimsS", $texte))
){
return $texte;
}
......@@ -461,6 +470,10 @@ function echapper_html_suspect($texte) {
// donc un test d'egalite est trop strict
if (strlen(safehtml($texte)) !== strlen($texte)) {
$texte = str_replace("<", "&lt;", $texte);
if (!function_exists('attribut_html')) {
include_spip('inc/filtres');
}
$texte = "<mark title='".attribut_html(_T('erreur_contenu_suspect'))."'>⚠️</mark> ".$texte;
}
return $texte;
......
......@@ -147,6 +147,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'erreur_plugin_prefix_manquant' => 'Espace de nommage du plugin non défini',
'erreur_plugin_tag_plugin_absent' => '&lt;plugin&gt; manquant dans le fichier de définition',
'erreur_plugin_version_manquant' => 'Version du plugin manquante',
'erreur_contenu_suspect' => 'Texte mal formé',
// H
'htaccess_a_simuler' => 'Avertissement : la configuration de votre serveur HTTP ne tient pas compte des fichiers @htaccess@. Pour pouvoir assurer une bonne sécurité, il faut que vous modifiiez cette configuration sur ce point, ou bien que les constantes @constantes@ (définissables dans le fichier mes_options.php) aient comme valeur des répertoires en dehors de @document_root@.',
......
......@@ -18,7 +18,7 @@
</div>
<div class="champ contenu_pgp[ (#PGP*|strlen|?{'',vide})]">
<div class='label'>PGP</div>
<div dir='#LANG_DIR' class='#EDIT{pgp} pgp'>[<code>(#PGP|image_reduire{500,0})</code>]</div>
<div dir='#LANG_DIR' class='#EDIT{pgp} pgp'>[<code>(#PGP|echapper_html_suspect|image_reduire{500,0})</code>]</div>
</div>
[<div class="champ contenu_notes">
<div class='label'><:info_notes:></div>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter