Suhosin et ses protections inattendues

mardi 23 septembre 2008 :: perrick :: PHP :: 3 commentaires :: aucun trackback

Je suis actuellement en train de bosser sur une nouvelle fonctionnalité d'opentime : le plan de charge. Cela doit permettre de savoir qui bosse quand et surtout qui a encore des trous dans son planning à venir. J'ai donc un grand tableau avec des cases à cocher : une personne x 30 jours x 20 projets, on est déjà à 600 cases.

Les cases à cocher décochées ne sont pas envoyées au serveur, donc pour savoir quelles sont les charges qu'il faut supprimer, j'ajoute un champ caché juste derrière (oui, je sais on pourrait aussi faire un diff avec ce qui existe en base mais avec le système de filtre, ce serait plus compliqué). Bref tout fonctionne en local. Pas de problème...

Et puis lors du premier passage en production -- sur notre intranet interne -- voilà-t-il pas que ça ne fonctionnait pas : mon identifiant de session changeait et j'étais littéralement ejecté de l'application. Quelques longues heures d'incompréhension plus tard (avec en plus une connexion ADSL intermittente aujourd'hui), j'ai découvert que le "coupable" était Suhosin. Ce très bel outil permet de sécuriser une installation de PHP et parmi les critères modifiables, on y trouve suhosin.post.max_vars => 200 => 200.

Les coupables : mes 600 champs cachés qui étaient largement au-dessus de la limite par défaut... Au final je n'ajoute ces champs cachés que lorsque la checkbox est bien cochée. Et au passage j'économise du code HTML (en passant 400K à 200K sur une page avec 50 projets) ce qui fera plaisir à certains.

PS : encore un de ces petits trucs que je garde précieusement au fond de mon blog en espérant que ça pourra aider l'un ou l'autre.

Vos commentaires et/ou trackbacks

Le mardi 23 septembre 2008 à 20:58, commentaire par Hugo :: site :: #

Merci pour ce billet. C'est bon à savoir au cas où ce genre de situation se présentait à moi lors d'un développement d'application déployée sur PHP Suoshin.

Le mercredi 24 septembre 2008 à 00:02, commentaire par Cédric :: site :: #

J'ai déjà rencontré ça avec l'administration de phpBB. Vrai que tant que l'on n'est pas prévenu...

Le mercredi 24 septembre 2008 à 09:31, commentaire par vincent voyer :: site :: #

J'ai découvert exactement la même chose lors de la création d'un module d'import de contacts (nb cases à cocher = nb contacts).

:)

Ajouter un commentaire

Les commentaires pour ce billet sont fermés.