Comment enregistrer HTML à la base de données et le récupérer correctement

L'apprentissage de la sécurité de ces jours 🙂
J'ai besoin de permettre aux utilisateurs d'entrer du texte dans une forme et leur permettre certaines balises HTML: gras, italique, etc la liste. et pour les empêcher d'ajouter un peu dangereux de code JavaScript.
J'ai donc utilisé cette liste blanche de mise en œuvre pour nettoyer le code HTML.
Mais je suis encore confus sur la façon d'enregistrer et d'afficher dans le droit chemin.
Voici donc ce que j'ai fait:
Modèle:

public class Post
    {
        [AllowHtml]
        public string Data { get; set; }
    }

Contrôleur:

[HttpPost, ActionName("Create")]
        [ValidateAntiForgeryToken]
        public ActionResult Create(Post model)
        {
            //Decode model.Data as it is Encoded after post
            string decodedString = HttpUtility.HtmlDecode(model.Data);
            //Clean HTML
            string sanitizedHtmlText =  HtmlUtility.SanitizeHtml(decodedString);

            string encoded = HttpUtility.HtmlEncode(sanitizedHtmlText);

Vue:

@using (Html.BeginForm("Create", "Home", FormMethod.Post)) {    
    @Html.AntiForgeryToken()
    @Html.TextAreaFor(a=>a.Data)
    <input type="submit" value="submit" />
}

Donc quand je poste un formulaire que je vois:

<p>Simple <em><strong>whitelist</strong> </em>test:</p>
<ul>
<li>t1</li>
<li>t2</li>
</ul>
<p>Image:</p>
<p>&lt;img src="http://metro-portal.hr/img/repository/2010/06/medium/hijena_shutter.jpg" /&gt;</p>

Becaouse de <p>&lt; je pense que j'ai besoin de décoder le premier:

<p>Simple <em><strong>whitelist</strong> </em>test:</p>
<ul>
<li>t1</li>
<li>t2</li>
</ul>
<p>Image:</p>
<p><img src="http://metro-portal.hr/img/repository/2010/06/medium/hijena_shutter.jpg" /></p>

Puis-je désinfecter à l'encontre de liste blanche et j'ai désinfecté HTML:

<p>Simple <em><strong>whitelist</strong> </em>test:</p>
<ul>
<li>t1</li>
<li>t2</li>
</ul>
<p>Image:</p>
<p>

1) dois-je l'enregistrer comme cela dans la base de données?
2) Ou j'ai besoin de Coder ce résultat et de l'enregistrer dans la base de données (codée ci-dessous)?

&lt;p&gt;Simple &lt;em&gt;&lt;strong&gt;whitelist&lt;/strong&gt; &lt;/em&gt;test:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;t1&lt;/li&gt;
&lt;li&gt;t2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Image:&lt;/p&gt;
&lt;p&gt;

Ici, je ne sais pas si je l'ai mis sur l'affichage comme ceci:

@Model.Data

- Je obtenir ce sur la vue:

&lt;p&gt;Simple &lt;em&gt;&lt;strong&gt;whitelist&lt;/strong&gt; &lt;/em&gt;test:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;t1&lt;/li&gt; &lt;li&gt;t2&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Image:&lt;/p&gt; &lt;p&gt;

ou

<p>Simple <em><strong>whitelist</strong> </em>test:</p> <ul> <li>t1</li> <li>t2</li> </ul> <p>Image:</p> <p>

Alors, que faire pour afficher cette page correctement (gras, liste, etc.)?

source d'informationauteur 1110 | 2014-02-09