[spip-dev] ini_get desactivee ?

Lu sur le forum spip sur uZine :

"""""
j'ai installé (mise à jour) la V1.4 chez Multimania et je récupère dès ma
page d'accueil un message me disant que la fonction "ini_get", utilisée dans
inc_version.php3, est invalidée pour des raisons de sécurité (confirmé par
les gens de Multimania). Dans le site public, j'ai le message en haut de
page, dans le site privé, je n'ai que le message en haut d'une page blanche.
(Je ne sais pas si les deux pbs sont liés). Que me conseillez vous pour
contourner le problème ?.
""""

Ca commence à bien faire ces histoires de "raisons de sécurité", c'est
super-super-gavant. Le code incriminé est dans ecrire/inc_version.php3, on
cherche à savoir si on peut activer le mode ob_gzhandler...

    $flag_ini_get = function_exists("ini_get");
    $flag_gz = function_exists("gzopen");
    $flag_ob = ($flag_ini_get
        && !ereg("ob_", ini_get('disable_functions'))
        && function_exists("ob_start"));
    $flag_obgz = ($flag_ob && function_exists("ob_gzhandler"));

J'ajoute un @ devant ini_get(), à tout hasard. Quelqu'un peut
tester la version cvs de spip sur multimania ??

<http://rezo.net/spip-cvs/cvs_root.tar.gz?tarball=1&cvsroot=SPIP>

-- Fil

J'ajoute un @ devant ini_get(), à tout hasard. Quelqu'un peut
tester la version cvs de spip sur multimania ??

PS -- ça doit marcher sur multiniania : chez moi j'ai "désactivé ini_get",
puis obtenu le message d'erreur, puis ajouté le @, puis constaté la
disparition du message d'erreur.

Le seul truc dont je ne suis pas très sûr, c'est le résultat de
@ini_get('disabled_functions') si ini_get est-lui-même désactivé **et si**
ob_get_contents est désactivé : la chaîne rendue par ini_get sera vide, a
priori, donc on n'y verra pas ob_, et par conséquent on croira que l'on peut
compresser, alors que c'est faux...

Mais pour bien faire il faudrait désactiver l'ensemble des fonctions de php,
comme ça on serait sûr de ne pas avoir de problème de sécurité !

-- Fil

Le seul truc dont je ne suis pas très sûr, c'est le résultat de
@ini_get('disabled_functions') si ini_get est-lui-même désactivé **et si**
ob_get_contents est désactivé : la chaîne rendue par ini_get sera vide, a
priori, donc on n'y verra pas ob_, et par conséquent on croira que l'on peut
compresser, alors que c'est faux...

Je propose de faire

    $flag_ini_get = ... AND @ini_get('max_execution_time');

    Comme ça, si on n'arrive pas à faire ini_get() sur max_execution_time,
on n'essaiera pas de le faire sur disable_functions, et on n'activera pas,
dans le doute, ob_gzhandler....

Commentaires ?

-- Fil

@ Antoine Pitrou <antoine@rezo.net> :

On devrait peut-être sortir un SPIP de sécurité ? SécuriSPIP ?? ;-))

On devrait surtout trouver un hébergeur correct qui aime spip et s'engage à
quelques trucs de base en termes de spip (et pas forcément en termes de
php).

-- Fil

Je propose de faire

    $flag_ini_get = ... AND @ini_get('max_execution_time');

    Comme ça, si on n'arrive pas à faire ini_get() sur max_execution_time,
on n'essaiera pas de le faire sur disable_functions, et on n'activera pas,
dans le doute, ob_gzhandler....

Commentaires ?

Ok :-))