Vous faites des erreurs.
Si vous acceptez du texte formaté en HTML à partir de l'éditeur de texte enrichi, vous ne peut pas appelez Html.Encode
sinon il codera toutes les balises HTML et vous verrez des balises brutes au lieu d'un texte formaté.
Cependant, vous devez toujours vous protéger contre les XSS.
En d'autres termes, si l'utilisateur saisit le code HTML suivant :
<b>Hello!</b>
<script>alert('XSS!');</script>
Vous voulez garder le <b>
mais supprime (sans l'encoder) la balise <script>
étiquette.
De même, vous devez déposer les attributs d'événements en ligne (comme les suivants onmouseover
) et les URLs Javascript (comme <a href="javascript:alert('XSS!');>Dancing Bunnies!</a>
)
Vous devez faire passer le code HTML de l'utilisateur par un analyseur XML strict et maintenir une liste blanche stricte de balises et d'attributs lors de l'enregistrement du contenu.