2011-02-17 6 views
0

Si j'ai les données suivantes, quelle est la meilleure option en termes de stockage de base de données.Désinfection de données et stockage de base de données

Here is text<br><br>Here is some more text 

Je vois que j'ai 3 options:

  • magasin dans DB comme il est décode alors à l'exécution: <p>hello</p>
  • Decode puis stocker dans DB: <p>hello</p>
  • balises Strip complètement : Hello

Y a-t-il un grand «non» avec f ci-dessus, juste à la recherche de conseils sur les meilleures pratiques. A noter également que je n'aurai absolument aucun contrôle sur les données que je reçois.

Répondre

1

En fonction de vos besoins, je suggère de retirer les étiquettes ou de stocker la version non codée.

Si vous n'avez pas besoin des étiquettes, vous pouvez les enlever et stocker le texte brut.

Si vous devez conserver les balises et le formatage, il est plus facile de sauvegarder la version non codée. Traiter avec de vraies étiquettes c'est beaucoup plus simple. En outre, c'est une responsabilité de la vue d'encoder la sortie. En fait, cela dépend strictement de l'endroit où vous allez imprimer la chaîne.

Dans la console, par exemple, les balises ne créent aucun problème. C'est juste quand vous avez besoin d'imprimer la chaîne dans une vue HTML. Mais heureusement, Rails prend soin de la désinfection de sortie pour vous, vous n'avez donc pas besoin de stocker la version assainie dans la base de données.

+0

Existe-t-il un moyen «facile» de supprimer les caractères ou est-ce simplement d'utiliser gsub() pour les remplacer? – Zinc

+0

Rails propose un assistant 'strip_tags'. http://goo.gl/8COH0 –

0

Convertissez les données en forme canonique et stockez-les. Autrement dit, vous devez stocker <p>Hello</p> ou (bien que je doute que c'est le décodage destiné pour votre exemple).

Ensuite, vous pouvez effectuer une recherche sans avoir à se soucier de la façon dont il a été codé (&Ouml;, &#214; ou &#xD6;, par exemple?), Et tout simplement encoder à quel format est approprié pour l'affichage sur le rendu.

Questions connexes