sandbox.php
Gestion d'une sécurisation des squelettes
Une surcharge de ce fichier pourrait permettre :
- de limiter l'utilisation des filtres à l'aide d'une liste d’inclusion ou d’exclusion,
- de rendre inactif le PHP écrit dans les squelettes
- de refuser l'inclusion de fichier PHP dans les squelettes
Table of Contents
Constants
- CODE_INCLURE_SCRIPT = 'if (!($path = %s) OR !is_readable($path)) erreur_squelette(array("fichier_introuvable", array("fichier" => "%s")), array(%s)); else { $contexte_inclus = %s; include $path; } '
Functions
- sandbox_composer_texte() : string
- Composer le code d'exécution d'un texte
- sandbox_composer_filtre() : string
- Composer le code d'exécution d'un filtre
- sandbox_composer_inclure_php() : string
- Composer le code d'inclusion PHP
- sandbox_composer_interdire_scripts() : string
- Composer le code de sécurisation anti script
- sandbox_filtrer_squelette() : mixed|string
- Appliquer des filtres sur un squelette complet
- echapper_php_callback() : string|array<string|int, mixed>
- Callback pour échapper du code PHP (les séquences `<?php ... ?>`)
Constants
CODE_INCLURE_SCRIPT
public
mixed
CODE_INCLURE_SCRIPT
= 'if (!($path = %s) OR !is_readable($path))
erreur_squelette(array("fichier_introuvable", array("fichier" => "%s")), array(%s));
else {
$contexte_inclus = %s;
include $path;
}
'
Functions
sandbox_composer_texte()
Composer le code d'exécution d'un texte
sandbox_composer_texte(string $texte, Champ &$p) : string
En principe juste un echappement de guillemets sauf si on veut aussi echapper et interdire les scripts serveurs dans les squelettes
Parameters
- $texte : string
-
texte à composer
- $p : Champ
-
Balise qui appelle ce texte
Return values
string —texte
sandbox_composer_filtre()
Composer le code d'exécution d'un filtre
sandbox_composer_filtre(string $fonc, string $code, string $arglist, Champ &$p[, int $nb_arg_droite = 1000 ]) : string
Parameters
- $fonc : string
- $code : string
- $arglist : string
- $p : Champ
- $nb_arg_droite : int = 1000
-
nb d'arguments à droite du filtre dans le source spip |fff{a,b,c} Balise qui appelle ce filtre
Return values
stringsandbox_composer_inclure_php()
Composer le code d'inclusion PHP
sandbox_composer_inclure_php(string $fichier, Champ &$p, string $_contexte) : string
Parameters
- $fichier : string
- $p : Champ
-
Balise créant l'inclusion
- $_contexte : string
-
Chaine PHP qui écrira le contexte 'array(...)'
Return values
stringsandbox_composer_interdire_scripts()
Composer le code de sécurisation anti script
sandbox_composer_interdire_scripts(string $code, Champ &$p) : string
Parameters
- $code : string
- $p : Champ
-
Balise sur laquelle s'applique le filtre
Return values
stringsandbox_filtrer_squelette()
Appliquer des filtres sur un squelette complet
sandbox_filtrer_squelette(array<string|int, mixed> $skel, string $corps, array<string|int, mixed> $filtres) : mixed|string
La fonction accèpte plusieurs tableaux de filtres à partir du 3ème argument qui seront appliqués dans l'ordre
Parameters
- $skel : array<string|int, mixed>
- $corps : string
- $filtres : array<string|int, mixed>
-
Tableau de filtres à appliquer.
Tags
Return values
mixed|stringechapper_php_callback()
Callback pour échapper du code PHP (les séquences `<?php ... ?>`)
echapper_php_callback([array<string|int, mixed>|null $r = null ]) : string|array<string|int, mixed>
Rappeler la fonction sans paramètre pour obtenir les substitutions réalisées.
Parameters
- $r : array<string|int, mixed>|null = null
-
- array : ce sont les captures de la regex à échapper
- NULL : demande à dépiler tous les échappements réalisés
Tags
Return values
string|array<string|int, mixed> —- string : hash de substitution du code php lorsque
$r
est un array - array : Liste( liste des codes PHP, liste des substitutions )