Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Dans tous mes Forms ou lecture de paramètres GET, j'utilise le filtre Zend_Filter_StripTags :
Exemples:
$champLibelle->setLabel('Libellé') ->setRequired(true) ->addFilter('StringTrim') ->addFilter('StripTags') ->addValidator('NotEmpty', true); $filter = new Zend_Filter_StripTags(); $Lvalue = $filter->filter($this->_request->get('value'));
Hélas je viens de m'apercevoir que celui-ci filtre les caractères ">" et "<" en supprimant aussi une partie du texte.
"signe > superieur signe < inferieur" devient "signe superieur signe "
Que me conseillez-vous d'utiliser pour filtrer les "injections de code" tout en ne supprimant pas ces caractères ?
A noter que remplacer les caractères par > et < fonctionne, mais je peux difficilement demander aux utilisateurs de le faire ...
D'avance, merci.
Eric.
Hors ligne
Pourquoi enlèves-tu les balises ?
Il ne faut "jamais" modifier les données des utilisateurs. Si tu veux afficher des données pouvant contenir des balises HTML ou autres utilise l'aide de vue Escape (dans une vue : $this->escape('<truc>')).
Hors ligne
Je ne veux pas spécialement permettre des balises HTML;
je veux juste m'assurer que l'on ne risque pas de faire de "l'injection de code" à travers les paramètres.
Avant d'utiliser Z.F., je faisais htmlspecialchars() sur tous les champs.
Simplement, le filtre StripTags est celui utilisé dans de nombreux exemples, donc j'ai pensé qu'il faisait tout comme je voulais.
Je ne dois pas être le seul, et j'aimerais bien savoir quel(s) filtre(s) standards vous utilisez.
Merci,
Eric.
Hors ligne
Personnellement, je n'utilise aucun filtre.
Tu peux développer "l'injection de code" parce que c'est assez vague. Tu fais référence à HTML, SQL, PHP ou autre chose ?
S'il met du PHP, en théorie, aucun souci tant que tu ne fais pas d'"eval", de require, etc. avec les données.
Si c'est du HTML, un simple "escape" suffit à transformer certains caractères (>, <<, etc.) en entité, ce qui rend l'HTML ainsi que le javascript comme du simple texte.
Pour le SQL, si tu utilises Zend_Db, tu ne devrais en théorie n'avoir aucun problème si tu lis bien la doc.
StripTags n'est utile que si tu veux autoriser l'utilisateur à afficher du contenu HTML, ce qui te permet de filtrer les balises autorisées. Mais dans ce cas HTMLPurifier peut être plus adapté.
Hors ligne