Pourquoi Drupal filtre-t-il au moment de l’affichage ?

Référence sur drupal.org : 23 Février 2009 – 03h46 - http://drupal.org/node/263002


Une approche répandue dans d’autres applications web est de traiter ou filtrer les saisies utilisateurs pour des raisons de sécurité. Historiquement, Drupal préservait les saisies telles quelles et ne les filtraient qu’en sortie. Le sujet est débattu de temps à autre dans la communauté Drupal.

L’excellent article Safe string theory for the web de Steven Witten apporte une explication technique sur les raisons de filtrer selon les différents contextes des sorties.

Désormais, nous voyons que filtrer la saisie est problématique car nous ne pouvons connaître les caractères interdits sans connaître le contexte dans lequel ils apparaîtront.

Pour compliquer les choses, une chaîne donnée peut apparaître dans plus d’un contexte, par exemple en tant que texte HTML et aussi en tant qu’attribut comme dans <a title="$node->title">$node->title</a>. Donc si vous voulez filtrer tous les caractères, votre système sera paralysé parce que vous aurez besoin de filtrer trop de caractères, si vous voulez encoder, vous ne pouvez savoir comment encoder. L’encodage présente une autre problème, traiter du texte échappé est très malaisé (essayez d’extraire le teaser du corps d’un node HTML échappé).

Il n’y a pas d’autre alternative que d’enregistrer les saisies utilisateur sans modifications et d’appliquer les filtrages et les traitements appropriés lors des sorties.

Commentaires

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <css>, <php>, <html>, <ccss>, <ccss>, <drupal5>, <drupal6>, <html>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • You may use [view:viewname] tags to display listings of nodes.

Plus d'informations sur les options de formatage

CAPTCHA
Cette question permet d'éviter le spam :
14 + 4 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.