2010-12-08 8 views
3

J'ai récemment appris que je ne devais pas stocker de données codées en HTML dans la base de données, mais je devrais plutôt coder en HTML les données affichées à l'écran pour l'utilisateur. Pas grave, je dois corriger mes enregistrements de base de données et apporter quelques modifications au code. Mais ma question est, quand devrais-je utiliser encodage html et quand ne devrait pas I. Par exemple, dans une table html, j'écris directement de la base de données au code HTML interne d'une colonne. Sans codage, ce serait dangereux, je comprends.Comment et quand utiliser le codage Html

Que dire lors de la définition de la valeur d'une zone de texte. Il semble fonctionner sans avoir à encoder html la valeur. Mais je ne suis pas sûr pourquoi. C'est ce que la zone de texte ressemble:

<input type="textbox" value="xxx"/> 

Mais quand le réglage de la valeur: "/><p style="font-size: 100px;">testing hack</p> La source HTML sera:

<input type="textbox" value=""/><p style="font-size: 100px;">testing hack</p> 

Il regardera bien que vus si l'ISN p-tag ne fonctionne pas comme prévu par le "hack".

Est-ce que quelqu'un obtient ce que j'essaie de viser :)? Si j'essaie de coder html quelque chose que j'ai défini à une valeur de zone de texte, le résultat affichera "& lt" et ainsi de suite, ce qui n'est pas ce que je voulais. Donc, en bref: Devrais-je seulement coder html stuff qui est défini sur innerHtml de contrôles HTML, et non lors de la définition de la valeur de, par exemple, des zones de texte?

+0

Testez-vous en utilisant IE? IE échappe parfois les données que vous avez envoyées au serveur si elles apparaissent dans le document. – thejh

+0

Non, je suis en train de tester dans Chrome. – Andreas

+0

@Andreas: Avez-vous vraiment regardé le code source (STRG + U) ou l'avez-vous regardé dans l'onglet "Elements" des outils de développement qui parfois ne raconte pas toute l'histoire? – thejh

Répondre

3

La réponse est venue de thejh et ma discussion dans le commentaire à la question. Je ne savais pas quoi marquer comme réponse, alors j'ai décidé de répondre à ma propre question. J'espère que ça va.

Il semble que lors de la définition d'une valeur d'un attribut (comme la "valeur" de la zone de texte) .NET automatiquement html code la valeur, donc vous n'avez pas besoin de le faire vous-même.

Lors de la définition d'un code HTML HTML de contrôles html, il est important que html encoder la valeur.

Merci Thejh, désolé je ne pouvais pas voter tout ce que vous avez écrit.

edit: Je ne peux pas marquer cela comme la réponse pour un autre 2 jours.

1

dans le cas de

<input type="textbox" value="xxx"/>

'xxx' est un attribut, et vous devez utiliser un codage différent. Dans ASP.NET, c'est par exemple HtmlAttributeEncode.

1

Pour les attributs HTML, coder les barres obliques inverses et les guillemets doubles.

  1. Remplacer tous \ par \\
  2. Remplacer tous " par \"

Oh, par la façon: Parfois, PHP fait pour vous, voir here.

Cette fonctionnalité a été désapprouvée à partir de PHP 5.3.0. S'appuyer sur cette fonctionnalité est fortement déconseillé.

Questions connexes