5 votes

Pourquoi dois-je faire html.encode() ?

Si un utilisateur saisit des données dans un éditeur de texte riche (éditeur minuscule) et soumet des données que je stocke dans une base de données et que je récupère ensuite pour les afficher sur d'autres pages web dynamiques, pourquoi ai-je besoin d'un encodage ici ?

Est-ce que la seule raison est que quelqu'un pourrait coller du javascript dans l'éditeur de texte enrichi ? y a-t-il une autre raison ?

1voto

Dustin Laine Points 22815

Oui, c'est pour empêcher l'exécution de JavaScript si quelqu'un saisissait une chaîne malveillante dans l'éditeur de texte enrichi. Cependant, le javascript en texte clair n'est pas votre seule préoccupation, par exemple ceci est un XSS :

<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>

Jetez un coup d'œil ici pour une gamme de différentes options XSS ; http://ha.ckers.org/xss.html

1voto

Brian Mulcahy Points 151

En guise d'aparté..... MVC2 a implémenté une nouvelle fonctionnalité qui fait que vous n'avez plus besoin d'appeler HTML.Encode

si vous changez la syntaxe de votre vue de

à

MVC codera automatiquement pour vous. Cela rend les choses beaucoup plus faciles/rapides. Encore une fois, MVC2 seulement

0voto

Atanas Korchev Points 20945

Une autre raison est que certains utilisateurs peuvent saisir quelques balises de fermeture. </div></table> et potentiellement casser la mise en page de votre site web. Si vous utilisez un outil d'édition HTML, assurez-vous que le code produit est valide avant de l'intégrer dans la page sans codage. Pour ce faire, une analyse syntaxique côté serveur est nécessaire. Vous pouvez utiliser HtmlAgilityPack pour le faire.

0voto

Flory Points 1911

La raison principale de faire ce que vous suggérez est d'échapper à votre sortie. Comme vous acceptez le HTML et que vous voulez l'éditer, vous ne pouvez pas le faire. Ce que vous devez faire, c'est filtrer les choses que les utilisateurs peuvent faire et qui ne sont pas sûres, ou du moins pas ce que vous voulez.

Pour cela, laissez-moi vous suggérer AntiSamy .

Vous pouvez en faire la démonstration aquí .

Ce que vous faites comporte de nombreux risques inhérents et vous devez y réfléchir très sérieusement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X