Reconsidérons le problème néanmoins, entre nous.
strip_tags dans le cas présent sera appliqué à quel champ?
et ce champ est renseigné par qui?
Pas par un visiteur? (On ne parle pas des commentaires des images, mais de leurs descriptions).
Quel webmaster écrit dans une description <b ou <i onMouserOver= ?
De plus le bug connu de strip_tags n'est présent que lors qu'on lui demande d'exclure certain tags.
Il ne faut pas exagérer sinon certains fournisseurs d'accès vont trouver le prétexte pour nous retirer strip_tags. Si tu vois qui je veux dire.
;-)
PS: le résultat du dernier exemple ne donne pas :
<b onMouserOver="alert('coucou')">nicolas</b>...
mais
<b onMouserOver="alert('coucou')">coucou</b>...
(Ce qui est bien une faille XSS (Cross Site Scripting). Nous sommes d'accord.)
Bon visiblement je suis le seul à connaître ou à avoir vérifier. Supposons que l'on veuille ne garder que les tags b et i. Le code devrait ressembler à ça:
$texte1 = '<p><b>nicolas</b> est <i>grand</i></p>'; echo strip_tags($texte1, '<b><i>'); // affiche bien <b>nicolas</b> est <i>grand</i>
Cela semble pas mal mais les exemples suivants prouvent que cela ne fonctionne pas.
$texte2 = '<p> 3>2 et 6<5 n\'est-ce pas ?'; echo strip_tags($texte2, '<b><i>');
Cela affiche 3>2 et 6. Le reste de la chaîne est tout simplement supprimé.
$texte3 = '<p><b onMouserOver="alert(\'coucou\')">coucou</b> est <i>grand</i></p>'; echo strip_tags($texte2, '<b><i>');
Et là catastrophe, cela affiche :
<b onMouserOver="alert('coucou')">nicolas</b> est <i>grand</i>
Là on n'a une faille XSS (Cross Site Scripting).
Ce n'est pas réellement un bug de la fonction strip_tags() car ce comportement est connu et documenté mais on n'a pas les résultats auxquels on pourrait s'attendre.
Pierrot_Rennes,
le but est de proposer une solution qui convienne au plus grand nombre.
Avec les informations de p@t, je pourrai livrer une nouvelle version demain ou après demain.
EX-FTB a écrit:
Pierrot,
Vient gentiment de m'indiquer que mon plugin était la cause de son souci avec le code html dans les descriptions.
Ce qui vrai puisque pour éviter des plantages, j'ai incorporé deux strip_tags sur la balise "tittle" et sur la balise "alt" des photos
$template->assign( array(
'SRC_IMG' => $ThePicture['image_url'],
'WIDTH_IMG' => $ThePicture['scaled_width'],
'HEIGHT_IMG' => $ThePicture['scaled_height'],
'COMMENT_IMG' => strip_tags($ThePicture['comment']),
'ALT_IMG' => strip_tags( $ThePicture['name']).$usemap
));
Je souhaite adopter une position commune avec tous ceux qui développent du code pour Piwigo.
Quand faut-il utiliser le strip_tags et quand faut-il s'abstenir?
RQ:
Si nécessaire je peux prévoir une option avec ou sans.
Bonsoir,
Ne vois dans ma remarque qu'une balise de détresse ;-)
Merci de te préoccuper du souci et ça peut rendre service à tous...
Bonne soirée
Je n'ai pas eu l'occasion de lire que strip_tags est buggée....
En tout cas, si c'est le cas, il faudrait prévoir de la remplacer dans piwigo, car on l'utilise dans plusieurs endroits...
EX-FTB, il faut prendre en compte le paramètre $conf['allow_html_descriptions']....
Ce qui te donnera:
$template->assign( array(
'SRC_IMG' => $ThePicture['image_url'],
'WIDTH_IMG' => $ThePicture['scaled_width'],
'HEIGHT_IMG' => $ThePicture['scaled_height'],
'COMMENT_IMG' => $conf['allow_html_descriptions'] ? $ThePicture['comment'] : strip_tags($ThePicture['comment']),
'ALT_IMG' => strip_tags( $ThePicture['name']).$usemap
));
EX-FTB a écrit:
Quand faut-il utiliser le strip_tags et quand faut-il s'abstenir?
Il ne faut jamais utiliser strip_tags. La fonction est buggée et ne donne pas forcément le résultat escompté!
Pierrot,
Vient gentiment de m'indiquer que mon plugin était la cause de son souci avec le code html dans les descriptions.
Ce qui vrai puisque pour éviter des plantages, j'ai incorporé deux strip_tags sur la balise "tittle" et sur la balise "alt" des photos
$template->assign( array(
'SRC_IMG' => $ThePicture['image_url'],
'WIDTH_IMG' => $ThePicture['scaled_width'],
'HEIGHT_IMG' => $ThePicture['scaled_height'],
'COMMENT_IMG' => strip_tags($ThePicture['comment']),
'ALT_IMG' => strip_tags( $ThePicture['name']).$usemap
));
Je souhaite adopter une position commune avec tous ceux qui développent du code pour Piwigo.
Quand faut-il utiliser le strip_tags et quand faut-il s'abstenir?
RQ:
Si nécessaire je peux prévoir une option avec ou sans.