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

"proteger dans le contenu le javascript venant des modeles

(et uniquement celui la) lorsque l'on est identifie
l'echappement utilise l'alea tournant de l'auteur connecte, ce qui evite un risque
d'injection de javascript encode64 dans un article par un auteur malveillant"
parent 3aba841f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -386,6 +386,15 @@ function echappe_js($t,$class='') { ...@@ -386,6 +386,15 @@ function echappe_js($t,$class='') {
$t); $t);
return $t; return $t;
} }
function protege_js_modeles($t) {
if (isset($GLOBALS['auteur_session']['alea_actuel'])){
$a = $GLOBALS['auteur_session']['alea_actuel'];
if (preg_match_all(',<script.*?($|</script.),isS', $t, $r, PREG_SET_ORDER))
foreach ($r as $regs)
$t = str_replace($regs[0],code_echappement($regs[0],'javascript'.$a),$t);
}
return $t;
}
// Securite : empecher l'execution de code PHP, en le transformant en joli code // Securite : empecher l'execution de code PHP, en le transformant en joli code
// http://doc.spip.org/@interdire_scripts // http://doc.spip.org/@interdire_scripts
...@@ -1079,6 +1088,7 @@ function traiter_modeles($texte, $doublons=false, $echap='') { ...@@ -1079,6 +1088,7 @@ function traiter_modeles($texte, $doublons=false, $echap='') {
// le remplacer dans le texte // le remplacer dans le texte
if ($modele !== false) { if ($modele !== false) {
$modele = protege_js_modeles($modele);
$rempl = code_echappement($modele, $echap); $rempl = code_echappement($modele, $echap);
$texte = substr($texte, 0, $a) $texte = substr($texte, 0, $a)
. $rempl . $rempl
...@@ -1512,6 +1522,10 @@ function propre($letexte) { ...@@ -1512,6 +1522,10 @@ function propre($letexte) {
if (!_DIR_RESTREINT) if (!_DIR_RESTREINT)
$letexte = interdire_scripts($letexte); $letexte = interdire_scripts($letexte);
// Reinserer le javascript de confiance (venant des modeles)
if (isset($GLOBALS['auteur_session']['alea_actuel']))
$letexte = echappe_retour($letexte,"javascript".$GLOBALS['auteur_session']['alea_actuel']);
return $letexte; return $letexte;
} }
......
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