Je tâchais de soigneusement appliquer l'échappement javascript puis
html dans les pages que je génère (avec un programme).
Et en fait ça n'a pas l'air tout à fait correct : j'ai l'impression que
dans la balise <script> il ne faut pas faire les échappements html.
Après être tombé dessus par hasard j'ai fait un essai sur une page toute
simple et on dirait bien que les échappements html sont en trop dans
une balise <script>. par exemple cette page m'affiche une boîte de
dialogue avec "&" écrit dedans au démarrage mais une boîte avec
"&" quand je clique sur le champ de saisie :
A priori dans mes pages ça fonctionne comme ça : dans le code html à
proprement parler (par exemple le code d'un événement sur un champ de
saisie) je dois appliquer les échappements js puis html, mais dans la
balise <script> seulement les échappements js. Testé avec Firefox
seulement.
Est-ce que quelqu'un peut confirmer/infirmer ça ? C'est normal, c'est
écrit dans une norme quelque part ?
A priori dans mes pages ça fonctionne comme ça : dans le code html à proprement parler (par exemple le code d'un événement sur un champ de saisie) je dois appliquer les échappements js puis html, mais dans la balise <script> seulement les échappements js. Testé avec Firefox seulement.
Est-ce que quelqu'un peut confirmer/infirmer ça ? C'est normal, c'est écrit dans une norme quelque part ?
C'est normal... Et c'est expliqué et détaillé dans les recommandations HTML5 (cf. section 4.11.1.2).
Pour HTML4, le contenu d'un élément "script" est de type CDATA. Ce type est décrit par :
Le type CDATA représente une séquence de caractères, issus du jeu de caractère du document, qui peut inclure des entités de caractères. Les agents utilisateurs devraient interpréter les valeurs d'attributs ainsi : - remplacer les entités de caractères par les caractères correspondants ; - ignorer les sauts de ligne ; - remplacer chaque retour chariot ou tabulation par un espace simple.
Mais un peu plus loin, on trouve :
Bien que les éléments STYLE et SCRIPT utilisent le type « CDATA » pour leur modèle de données, les agents utilisateurs doivent interpréter différemment le type CDATA pour ceux-ci. Le balisage et les entités doivent être traités comme du texte brut et passés tel quel à l'application. La première occurence de la séquence de caractères « </ » (délimiteur d'ouverture de balise fermante) est traitée comme terminant la fin du contenu de l'élément. Dans les documents valides, ce serait la balise fermante de l'élément.
A priori dans mes pages ça fonctionne comme ça : dans le code html à
proprement parler (par exemple le code d'un événement sur un champ de
saisie) je dois appliquer les échappements js puis html, mais dans la
balise <script> seulement les échappements js. Testé avec Firefox
seulement.
Est-ce que quelqu'un peut confirmer/infirmer ça ? C'est normal, c'est
écrit dans une norme quelque part ?
C'est normal... Et c'est expliqué et détaillé dans les recommandations
HTML5 (cf. section 4.11.1.2).
Pour HTML4, le contenu d'un élément "script" est de type CDATA. Ce type
est décrit par :
Le type CDATA représente une séquence de caractères, issus du jeu
de caractère du document, qui peut inclure des entités de
caractères. Les agents utilisateurs devraient interpréter les
valeurs d'attributs ainsi :
- remplacer les entités de caractères par les caractères
correspondants ;
- ignorer les sauts de ligne ;
- remplacer chaque retour chariot ou tabulation par un espace
simple.
Mais un peu plus loin, on trouve :
Bien que les éléments STYLE et SCRIPT utilisent le type « CDATA »
pour leur modèle de données, les agents utilisateurs doivent
interpréter différemment le type CDATA pour ceux-ci. Le balisage et
les entités doivent être traités comme du texte brut et passés tel
quel à l'application. La première occurence de la séquence de
caractères « </ » (délimiteur d'ouverture de balise fermante) est
traitée comme terminant la fin du contenu de l'élément. Dans les
documents valides, ce serait la balise fermante de l'élément.
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
A priori dans mes pages ça fonctionne comme ça : dans le code html à proprement parler (par exemple le code d'un événement sur un champ de saisie) je dois appliquer les échappements js puis html, mais dans la balise <script> seulement les échappements js. Testé avec Firefox seulement.
Est-ce que quelqu'un peut confirmer/infirmer ça ? C'est normal, c'est écrit dans une norme quelque part ?
C'est normal... Et c'est expliqué et détaillé dans les recommandations HTML5 (cf. section 4.11.1.2).
Pour HTML4, le contenu d'un élément "script" est de type CDATA. Ce type est décrit par :
Le type CDATA représente une séquence de caractères, issus du jeu de caractère du document, qui peut inclure des entités de caractères. Les agents utilisateurs devraient interpréter les valeurs d'attributs ainsi : - remplacer les entités de caractères par les caractères correspondants ; - ignorer les sauts de ligne ; - remplacer chaque retour chariot ou tabulation par un espace simple.
Mais un peu plus loin, on trouve :
Bien que les éléments STYLE et SCRIPT utilisent le type « CDATA » pour leur modèle de données, les agents utilisateurs doivent interpréter différemment le type CDATA pour ceux-ci. Le balisage et les entités doivent être traités comme du texte brut et passés tel quel à l'application. La première occurence de la séquence de caractères « </ » (délimiteur d'ouverture de balise fermante) est traitée comme terminant la fin du contenu de l'élément. Dans les documents valides, ce serait la balise fermante de l'élément.
> A priori dans mes pages ça fonctionne comme ça : dans le code html à > proprement parler (par exemple le code d'un événement sur un champ > de saisie) je dois appliquer les échappements js puis html, mais > dans la balise <script> seulement les échappements js. Testé avec > Firefox seulement. > > Est-ce que quelqu'un peut confirmer/infirmer ça ? C'est normal, > c'est écrit dans une norme quelque part ?
C'est normal... Et c'est expliqué et détaillé dans les recommandations HTML5 (cf. section 4.11.1.2).
Pour HTML4, le contenu d'un élément "script" est de type CDATA. Ce type est décrit par :
Le type CDATA représente une séquence de caractères, issus du jeu de caractère du document, qui peut inclure des entités de caractères. Les agents utilisateurs devraient interpréter les valeurs d'attributs ainsi : - remplacer les entités de caractères par les caractères correspondants ; - ignorer les sauts de ligne ; - remplacer chaque retour chariot ou tabulation par un espace simple.
Mais un peu plus loin, on trouve :
Bien que les éléments STYLE et SCRIPT utilisent le type « CDATA » pour leur modèle de données, les agents utilisateurs doivent interpréter différemment le type CDATA pour ceux-ci. Le balisage et les entités doivent être traités comme du texte brut et passés tel quel à l'application. La première occurence de la séquence de caractères « </ » (délimiteur d'ouverture de balise fermante) est traitée comme terminant la fin du contenu de l'élément. Dans les documents valides, ce serait la balise fermante de l'élément.
D'accord, je vais creuser tout ça. Merci pour les références.
Le Tue, 07 Jul 2015 11:26:41 +0200
Paul Gaborit <Paul.Gaborit@invalid.invalid> a écrit :
> A priori dans mes pages ça fonctionne comme ça : dans le code html à
> proprement parler (par exemple le code d'un événement sur un champ
> de saisie) je dois appliquer les échappements js puis html, mais
> dans la balise <script> seulement les échappements js. Testé avec
> Firefox seulement.
>
> Est-ce que quelqu'un peut confirmer/infirmer ça ? C'est normal,
> c'est écrit dans une norme quelque part ?
C'est normal... Et c'est expliqué et détaillé dans les recommandations
HTML5 (cf. section 4.11.1.2).
Pour HTML4, le contenu d'un élément "script" est de type CDATA. Ce
type est décrit par :
Le type CDATA représente une séquence de caractères, issus du jeu
de caractère du document, qui peut inclure des entités de
caractères. Les agents utilisateurs devraient interpréter les
valeurs d'attributs ainsi :
- remplacer les entités de caractères par les caractères
correspondants ;
- ignorer les sauts de ligne ;
- remplacer chaque retour chariot ou tabulation par un espace
simple.
Mais un peu plus loin, on trouve :
Bien que les éléments STYLE et SCRIPT utilisent le type « CDATA »
pour leur modèle de données, les agents utilisateurs doivent
interpréter différemment le type CDATA pour ceux-ci. Le balisage
et les entités doivent être traités comme du texte brut et passés tel
quel à l'application. La première occurence de la séquence de
caractères « </ » (délimiteur d'ouverture de balise fermante) est
traitée comme terminant la fin du contenu de l'élément. Dans les
documents valides, ce serait la balise fermante de l'élément.
D'accord, je vais creuser tout ça. Merci pour les références.
> A priori dans mes pages ça fonctionne comme ça : dans le code html à > proprement parler (par exemple le code d'un événement sur un champ > de saisie) je dois appliquer les échappements js puis html, mais > dans la balise <script> seulement les échappements js. Testé avec > Firefox seulement. > > Est-ce que quelqu'un peut confirmer/infirmer ça ? C'est normal, > c'est écrit dans une norme quelque part ?
C'est normal... Et c'est expliqué et détaillé dans les recommandations HTML5 (cf. section 4.11.1.2).
Pour HTML4, le contenu d'un élément "script" est de type CDATA. Ce type est décrit par :
Le type CDATA représente une séquence de caractères, issus du jeu de caractère du document, qui peut inclure des entités de caractères. Les agents utilisateurs devraient interpréter les valeurs d'attributs ainsi : - remplacer les entités de caractères par les caractères correspondants ; - ignorer les sauts de ligne ; - remplacer chaque retour chariot ou tabulation par un espace simple.
Mais un peu plus loin, on trouve :
Bien que les éléments STYLE et SCRIPT utilisent le type « CDATA » pour leur modèle de données, les agents utilisateurs doivent interpréter différemment le type CDATA pour ceux-ci. Le balisage et les entités doivent être traités comme du texte brut et passés tel quel à l'application. La première occurence de la séquence de caractères « </ » (délimiteur d'ouverture de balise fermante) est traitée comme terminant la fin du contenu de l'élément. Dans les documents valides, ce serait la balise fermante de l'élément.
D'accord, je vais creuser tout ça. Merci pour les références.