2009-10-12 11 views
2

Comme presque toutes les applications aujourd'hui, j'ai des utilisateurs qui entrent diverses informations via des entrées de texte standard. Mon application est en cours d'exécution sur Rails.Echappement des esperluettes saisies par les utilisateurs via les champs de texte?

Il est facile d'échapper les esperluettes que j'inclus dans le cadre de la copie du site, etc. Mais comment puis-je échapper une esperluette qui est entrée dynamiquement par un utilisateur? Actuellement, ça casse ma validation frontale.

+0

"Escape" les dans quel but? –

Répondre

6

Lorsque vous affichez les valeurs, vous devez remplacer certains caractères par des entités HTML. Ces caractères sont:

& : & 
< : &lt; 
> : &gt; 
" : &quot; 

Peut-être est une fonction HtmlEncode que vous pouvez utiliser pour cela, sinon vous pouvez utiliser les opérations de chaîne simple. Code Pseudo:

output replace(replace(replace(replace(text, "&", "&amp"), "<", "&lt;"), ">", "&gt;", """", "&quot;") 

Edit:
je trouve que vous pouvez utiliser la fonction html_escape():

<%=html_escape @text%> 

Ou bref:

<%=h @text%> 
+1

+1 'h' est la méthode Rails pour l'échappement HTML dans un modèle. ** Vous devez toujours l'utiliser! ** Il ne s'agit pas seulement de faire des esperluettes à droite; Si vous publiez du contenu textuel en HTML sans y échapper, vous avez un trou de sécurité pour les sites inter-sites. – bobince

+2

Conseil de suivi pour les autres nubes en lisant ceci plus tard. Dans ma situation particulière, le texte était hyperlié. J'utilise la méthode link_to. Si vous essayez d'utiliser <% = h link_to url, url%>, votre URL sera imprimée à l'écran. La façon de le faire est comme ceci: <% = link_to (h (url), url)%> – MikeH