Chargement en cours ecrire/inc/filtres.php +11 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -352,6 +352,17 @@ function filtre_setenv(&$Pile, $val, $key, $continue = null) { return $continue ? $val : ''; } /** * @param array $Pile * @param array|string $keys * @return string */ function filtre_sanitize_env(&$Pile, $keys) { $Pile[0] = spip_sanitize_from_request($Pile[0], $keys); return ''; } /** * Filtre `debug` qui affiche un debug de la valeur en entrée * Chargement en cours ecrire/inc/precharger_objet.php +4 −4 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -50,7 +50,7 @@ function precharger_objet($type, $id_objet, $id_rubrique = 0, $lier_trad = 0, $c // si l'objet existe deja, on retourne simplement ses valeurs if (is_numeric($id_objet)) { return sql_fetsel("*", $table, "$_id_objet=$id_objet"); return sql_fetsel("*", $table, "$_id_objet=".intval($id_objet)); } // ici, on demande une creation. Chargement en cours Chargement en cours @@ -133,7 +133,7 @@ function precharger_traduction_objet($type, $id_objet, $id_rubrique = 0, $lier_t $_id_objet = id_table_objet($table); // Recuperer les donnees de l'objet original $row = sql_fetsel("*", $table, "$_id_objet=$lier_trad"); $row = sql_fetsel("*", $table, "$_id_objet=".intval($lier_trad)); if ($row) { include_spip('inc/filtres'); $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')) . ' ' . $row[$champ_titre]; Chargement en cours Chargement en cours @@ -172,12 +172,12 @@ function precharger_traduction_objet($type, $id_objet, $id_rubrique = 0, $lier_t $id_parent = 0; } else { // on cherche une rubrique soeur dans la bonne langue $row_rub = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=$id_rubrique"); $row_rub = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=".intval($id_rubrique)); $id_parent = $row_rub['id_parent']; } $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=$id_parent"); "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=".intval($id_parent)); if ($row_rub) { $row['id_rubrique'] = $row_rub['id_rubrique']; } Chargement en cours ecrire/inc/utils.php +37 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -446,6 +446,43 @@ function set_request($var, $val = null, $c = false) { return false; # n'affecte pas $c } /** * Sanitizer une valeur *SI* elle provient du GET ou POST * Utile dans les squelettes pour les valeurs qu'on attrape dans le env, * dont on veut permettre à un squelette de confiance appelant de fournir une valeur complexe * mais qui doit etre nettoyee si elle provient de l'URL * * On peut sanitizer * - une valeur simple : `$where = spip_sanitize_from_request($value, 'where')` * - un tableau en partie : `$env = spip_sanitize_from_request($env, ['key1','key2'])` * - un tableau complet : `$env = spip_sanitize_from_request($env, '*')` * * @param string|array $value * @param string|array $key * @param string $sanitize_function * @return array|mixed|string */ function spip_sanitize_from_request($value, $key, $sanitize_function='entites_html') { if (is_array($value)) { if ($key=='*') { $key = array_keys($value); } if (!is_array($key)) { $key = [$key]; } foreach ($key as $k) { if (!empty($value[$k])) { $value[$k] = spip_sanitize_from_request($value[$k], $k, $sanitize_function); } } return $value; } // si la valeur vient des GET ou POST on la sanitize if (!empty($value) and $value == _request($key)) { $value = $sanitize_function($value); } return $value; } /** * Tester si une URL est absolue Chargement en cours ecrire/public/aiguiller.php +7 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -15,6 +15,13 @@ if (!defined('_ECRIRE_INC_VERSION')) { } function securiser_redirect_action($redirect) { // cas d'un double urlencode : si un urldecode de l'url n'est pas secure, on retient ca comme redirect if (strpos($redirect, '%') !== false) { $r2 = urldecode($redirect); if (($r3 = securiser_redirect_action($r2)) !== $r2) { return $r3; } } if ((tester_url_absolue($redirect) or preg_match(',^\w+:,',trim($redirect))) and !defined('_AUTORISER_ACTION_ABS_REDIRECT')) { // si l'url est une url du site, on la laisse passer sans rien faire Chargement en cours ecrire/public/balises.php +13 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -1728,6 +1728,19 @@ function balise_REM_dist($p) { return $p; } /** * Une balise #NULL quand on a besoin de passer un argument null sur l'appel d'un filtre ou formulaire * (evite un #EVAL{null}) * @param $p * @return mixed */ function balise_NULL_dist($p) { $p->code = "null"; $p->interdire_scripts = false; return $p; } /** * Compile la balise `#HTTP_HEADER` envoyant des entêtes de retour HTTP Chargement en cours Chargement en cours
ecrire/inc/filtres.php +11 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -352,6 +352,17 @@ function filtre_setenv(&$Pile, $val, $key, $continue = null) { return $continue ? $val : ''; } /** * @param array $Pile * @param array|string $keys * @return string */ function filtre_sanitize_env(&$Pile, $keys) { $Pile[0] = spip_sanitize_from_request($Pile[0], $keys); return ''; } /** * Filtre `debug` qui affiche un debug de la valeur en entrée * Chargement en cours
ecrire/inc/precharger_objet.php +4 −4 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -50,7 +50,7 @@ function precharger_objet($type, $id_objet, $id_rubrique = 0, $lier_trad = 0, $c // si l'objet existe deja, on retourne simplement ses valeurs if (is_numeric($id_objet)) { return sql_fetsel("*", $table, "$_id_objet=$id_objet"); return sql_fetsel("*", $table, "$_id_objet=".intval($id_objet)); } // ici, on demande une creation. Chargement en cours Chargement en cours @@ -133,7 +133,7 @@ function precharger_traduction_objet($type, $id_objet, $id_rubrique = 0, $lier_t $_id_objet = id_table_objet($table); // Recuperer les donnees de l'objet original $row = sql_fetsel("*", $table, "$_id_objet=$lier_trad"); $row = sql_fetsel("*", $table, "$_id_objet=".intval($lier_trad)); if ($row) { include_spip('inc/filtres'); $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')) . ' ' . $row[$champ_titre]; Chargement en cours Chargement en cours @@ -172,12 +172,12 @@ function precharger_traduction_objet($type, $id_objet, $id_rubrique = 0, $lier_t $id_parent = 0; } else { // on cherche une rubrique soeur dans la bonne langue $row_rub = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=$id_rubrique"); $row_rub = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=".intval($id_rubrique)); $id_parent = $row_rub['id_parent']; } $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=$id_parent"); "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=".intval($id_parent)); if ($row_rub) { $row['id_rubrique'] = $row_rub['id_rubrique']; } Chargement en cours
ecrire/inc/utils.php +37 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -446,6 +446,43 @@ function set_request($var, $val = null, $c = false) { return false; # n'affecte pas $c } /** * Sanitizer une valeur *SI* elle provient du GET ou POST * Utile dans les squelettes pour les valeurs qu'on attrape dans le env, * dont on veut permettre à un squelette de confiance appelant de fournir une valeur complexe * mais qui doit etre nettoyee si elle provient de l'URL * * On peut sanitizer * - une valeur simple : `$where = spip_sanitize_from_request($value, 'where')` * - un tableau en partie : `$env = spip_sanitize_from_request($env, ['key1','key2'])` * - un tableau complet : `$env = spip_sanitize_from_request($env, '*')` * * @param string|array $value * @param string|array $key * @param string $sanitize_function * @return array|mixed|string */ function spip_sanitize_from_request($value, $key, $sanitize_function='entites_html') { if (is_array($value)) { if ($key=='*') { $key = array_keys($value); } if (!is_array($key)) { $key = [$key]; } foreach ($key as $k) { if (!empty($value[$k])) { $value[$k] = spip_sanitize_from_request($value[$k], $k, $sanitize_function); } } return $value; } // si la valeur vient des GET ou POST on la sanitize if (!empty($value) and $value == _request($key)) { $value = $sanitize_function($value); } return $value; } /** * Tester si une URL est absolue Chargement en cours
ecrire/public/aiguiller.php +7 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -15,6 +15,13 @@ if (!defined('_ECRIRE_INC_VERSION')) { } function securiser_redirect_action($redirect) { // cas d'un double urlencode : si un urldecode de l'url n'est pas secure, on retient ca comme redirect if (strpos($redirect, '%') !== false) { $r2 = urldecode($redirect); if (($r3 = securiser_redirect_action($r2)) !== $r2) { return $r3; } } if ((tester_url_absolue($redirect) or preg_match(',^\w+:,',trim($redirect))) and !defined('_AUTORISER_ACTION_ABS_REDIRECT')) { // si l'url est une url du site, on la laisse passer sans rien faire Chargement en cours
ecrire/public/balises.php +13 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -1728,6 +1728,19 @@ function balise_REM_dist($p) { return $p; } /** * Une balise #NULL quand on a besoin de passer un argument null sur l'appel d'un filtre ou formulaire * (evite un #EVAL{null}) * @param $p * @return mixed */ function balise_NULL_dist($p) { $p->code = "null"; $p->interdire_scripts = false; return $p; } /** * Compile la balise `#HTTP_HEADER` envoyant des entêtes de retour HTTP Chargement en cours