2010-06-17 3 views
0

J'utilise ASP.Net 4.0 avec MVC 2. Je reçois du contenu utilisateur qui peut déjà être encodé au format Html. J'ai lu http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx ce qui était intéressant mais ce dont j'ai besoin, c'est d'un moyen de m'assurer que le contenu est encodé sans double encodage. Je n'ai pas le contrôle du processus d'entrée.Est-il possible de coder Html contenu qui peut déjà ou non être encodé proprement?

E.g.

utilisateur Entrée:

&amp; &lt; < > &gt; 

sortie si codé:

&amp;amp; &amp;lt; &lt; &gt; &amp;gt; 

n'affiche pas correctement

sortie si non codé:

&amp; &lt; < > &gt; 

Ce ne sera pas valider correc tly

Répondre

0

Je ne pense pas que vous trouverez une solution qui fonctionnera automatiquement à la fois pour le contenu codé et non - la seule façon de voir où vous pouvez le faire de manière fiable est de spécifier si le contenu a été codé ou non. Sinon, vous rencontrerez des problèmes dans certaines situations, par ex.

Some plain text mentioning &gt; being the syntax for > 

Et

<p>Some HTML mentioning that &amp;amp; is the syntax for &gt;</p> 

Vous pouvez essayer de détecter s'il est codé contenu ou contenu actuel HTML, mais mes exemples ci-dessus montrent que ce ne sera pas toujours infaillible.

1

Si c'était moi, je remplacerais seulement les caractères < et >, laissant tout le reste intact.

2

Vous pouvez effectuer une première entrée de décodage utilisateur, puis réencoder le résultat. Ainsi, si certaines valeurs de l'entrée sont déjà codées, elles seront décodées et vous pourrez tout encoder après.

&amp; &lt; < > &gt; 

-> décoder l'entrée et vous obtenez:

& < < > > 

-> tout recoder et vous obtenez:

&amp; &lt; &lt; &gt; &gt 
+0

Cela échouerait sur le contenu en texte brut mentionnant une entité HTML, car il serait décodé lorsque ce n'était pas l'intention. – Richard

+0

Vous avez raison. Je suppose que cela dépend du type de contribution qu'il obtiendra. – Shimrod

Questions connexes