Changeset 117760 in spip-zone


Ignore:
Timestamp:
Sep 6, 2019, 4:37:27 PM (6 months ago)
Author:
maieul@…
Message:

ne pas permettre d'executer du code js arbitraire via afficher_si

Location:
_plugins_/saisies/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisies/trunk/inc/saisies_afficher_si_js.php

    r117757 r117760  
    2424        $saisies_form = saisies_lister_par_nom($saisies_form);
    2525        if ($tests = saisies_parser_condition_afficher_si($condition)) {
     26                if (!saisies_afficher_si_secure($condition, $tests)) {
     27                        spip_log("Afficher_si incorrect. $condition non sécurisée", "saisies"._LOG_CRITIQUE);
     28                        return '';
     29                }
    2630                foreach ($tests as $test) {
    2731                        $expression = $test[0];
     
    4347                                $condition = str_replace($expression, saisies_afficher_si_js_champ($champ, $operateur, $valeur, $valeur_numerique, $guillemet, $negation, $saisies_form), $condition);
    4448                        }
     49                }
     50        } else {
     51                $condition = str_replace(' ', '', $condition);
     52                $condition_possible = array("!false", "false", "true", "!true");
     53                if (!in_array($condition, $condition_possible)){
     54                        spip_log("Afficher_si incorrect : $condition", "saisies"._LOG_CRITIQUE);
     55                        return '';
    4556                }
    4657        }
  • _plugins_/saisies/trunk/tests/saisies_afficher_si/saisies_afficher_si_js.php

    r117755 r117760  
    129129                                2 => $saisies_form
    130130                        ),
     131                        'hack' => array(
     132                                0 => '',
     133                                1 => 'alert("maman")'
     134                        ),
     135                        'hack_bis' => array(
     136                                0 => '',
     137                                1 => 'alert("maman") || @input_1@ == "2"'
     138                        ),
    131139                        'false' => array(
    132140                                0 => 'false',
Note: See TracChangeset for help on using the changeset viewer.