2009-05-13 6 views
0

J'utilise FckEditor dans la page Create.aspx dans l'application asp.net mvc.comment montrer le contenu qui includes html tag?

Étant donné que j'ai besoin d'afficher du texte enrichi dans les pages Web, j'ai utilisé la méthode d'action d'attribut ValidateInput (false) dans la classe de contrôleur.

Et j'ai utilisé Html.Encode (Model.Message) dans Details.aspx pour protéger l'attaque de l'utilisateur.

Mais, j'avais résultat ce que je ne voulais pas que ce qui suit:

<p> Hello </p>

Je voulais résultat suivant pas ci-dessus:

Hello

Comment puis-je montrer au texte quelle entrée de l'utilisateur?

Merci à l'avance

Répondre

0

La réponse courte est que HTMLEncode fait votre émission de balisage comme ça. Si vous n'avez pas HTMLEncode, il fera ce que vous voulez.

Vous devez déterminer si vous avez besoin d'un contrôle total du balisage, si vous entrez le balisage et si une option comme BBCode est une option.

Si vos utilisateurs utilisant l'éditeur sont tous sûrs d'être des utilisateurs 'sûrs', alors XSS ne devrait pas poser de problème. Cependant, si vous utilisez ceci dans un champ de commentaire, alors BBCode, ou quelque chose comme SO lui-même utilise est plus approprié.

Vous ne serez pas en mesure d'utiliser un éditeur WYSIWYG et faire HTMLEncode si ... (sans BBCode, ou d'un autre système de jetons)

+0

Thnaks Tchad, très utile. – Ray

0

Il semble que l'utilisateur a entré "<p> Hello </p>" (en raison de la touche Entrée?) Dans le contrôle d'édition, et il affiche correctement dans le code HTML que vous avez fait un Html.Encode. Par exemple. les paragraphes ne sont pas rendus, ils sont sortis comme "<p>..</p>" car la chaîne est codée en HTML en quelque chose comme "&lt;p&gt; Hello &lt;p&gt;".

Si vous ne voulez pas de balises, je suggère de rechercher la chaîne de texte pour les balises (choses avec <...>) et de les supprimer du texte entré. Faites-le avant HTML.Encode.

... ou est-ce qu'il me manque quelque chose?

Questions connexes