Browse Source

Fix un problème recurent de fuite de données lorsque les utilisateur mettent un #FORMULAIRE_TRUC dans un modeles/xxxx.html : le formulaire perd son dynamisme quand il est inclus dans l'appelant, que ce soit via un <xxxx|> ou via un #MODELE{xxx}. On repere le cas est on injecte du PHP qui appelle la fonction executer_balise_dynamique() au lieu d'injecter l'appel a la fonction lui meme

(cherry picked from commit 255be8fb01)
remotes/checkIfPRContentChanged-1639149954932168362/4.0
Cerdic 6 months ago
committed by Matthieu Marcillaud
parent
commit
419912dcd6
  1. 15
      ecrire/balise/formulaire_.php
  2. 2
      ecrire/inc_version.php

15
ecrire/balise/formulaire_.php

@ -135,7 +135,20 @@ function balise_FORMULAIRE__dist($p) {
}
// sinon renvoyer un code php dynamique
return calculer_balise_dynamique($p, $p->nom_champ, []);
$p = calculer_balise_dynamique($p, $p->nom_champ, []);
if (!test_espace_prive()
and !empty($p->descr['sourcefile'])
and $f = $p->descr['sourcefile']
and basename(dirname($f)) === 'modeles') {
// un modele est toujours inséré en texte dans son contenant
// donc si on est dans le public avec un cache on va perdre le dynamisme
// et on risque de mettre en cache les valeurs pre-remplies du formulaire
// on injecte donc le PHP qui va appeler la fonction pour generer le formulaire au lieu de directement la fonction
$p->code = "'<'.'?php echo (".texte_script($p->code)."); ?'.'>'";
// dans l'espace prive on a pas de cache, donc pas de soucis (et un leak serait moins grave)
}
return $p;
}
/**

2
ecrire/inc_version.php

@ -449,7 +449,7 @@ define('_SPIP_EXTRA_VERSION', '');
#define('_DEV_VERSION_SPIP_COMPAT',"3.2.99");
// version des signatures de fonctions PHP
// (= date de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes)
$spip_version_code = 20211021;
$spip_version_code = 20211117;
// version de la base SQL (= Date + numero incremental a 2 chiffres YYYYMMDDXX)
$spip_version_base = 2021021800;

Loading…
Cancel
Save