janvier
2010
Sebastien Bergmann a eu la bonne idée d’ajouter une règle « ZendView » à son outil bytekit-cli (que j’ai déja présenté ici)
Cette règle trace tous les appels à « echo $this->{xxx} » dans votre vue Zend_View et vous indique qu’il n’est pas bien d’afficher directement une variable de vue sans l’échapper auparavant.
Bon, de là à monter un système qui echappe automatiquement les variables de vues ( à la Symfony) il n’y a qu’un pas, Zend_View étant pour rappel premièrement facultatif (vous voulez utiliser un autre système de vues/templates ? faites donc) deuxièmement très flexible (Zend_View_Abstract / Zend_View_Interface).
Petit exemple de script de vue (edit.phtml) :
<h1>Edition du membre <?php echo $this->form->getElement('nom')->getValue() ?></h1>
<?php
echo $this->form;
?>
Et le bytekit :
julien@julien:views/scripts/membres$ bytekit --rule=ZendView edit.phtml
bytekit-cli 1.1.1 by Sebastian Bergmann.
- Attribute $this->form is not safe-guarded by Zend_View::escape()
in /media/www/pe/application/modules/default/views/scripts/membres/edit.phtml:4
Sympa, à mettre dans la trousse à outils avec les autres (PHPUnit, PHP_CodeSniffer, PHPCPD, PHPMD etc…)
1 Commentaire + Ajouter un commentaire
Commentaires récents
Archives
- novembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juillet 2008
- juin 2008
- mai 2008
- avril 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
- mars 2007
- février 2007
Hmm… Je ne suis pas sûr que l’exemple choisi illustre très bien l’intérêt de la chose.
Un formulaire Zend_Form n’a pas besoin d’être échappé, on fait confiance à son contenu, il ne provient pas de l’utilisateur, il renvoie du HTML de façon automatisée. Je sais bien que du point de vue MVC, on n’est pas censé faire confiance à quoi que ce soit, on est censé ignorer tout des variables, mais bon à ce moment là, le « echo $this->form->getElement(‘nom’)->getValue() » n’est plus bon non plus.
Qu’est ce qu’il faudrait lui faire à ce pauvre $this->form pour considérer qu’on l’a échappé, mais sans pourrir la sortie ?