Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.javascript > #2927 > unrolled thread
| Started by | Yliur <yliur@free.fr> |
|---|---|
| First post | 2015-07-07 09:05 +0200 |
| Last post | 2015-07-08 00:55 +0200 |
| Articles | 3 — 2 participants |
Back to article view | Back to fr.comp.lang.javascript
Échappement html et javascript Yliur <yliur@free.fr> - 2015-07-07 09:05 +0200
Re: Échappement html et javascript Paul Gaborit <Paul.Gaborit@invalid.invalid> - 2015-07-07 11:26 +0200
Re: Échappement html et javascript Yliur <yliur@free.fr> - 2015-07-08 00:55 +0200
| From | Yliur <yliur@free.fr> |
|---|---|
| Date | 2015-07-07 09:05 +0200 |
| Subject | Échappement html et javascript |
| Message-ID | <20150707090522.2929985c@free.fr> |
Bonjour
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 :
<html>
<head>
</head>
<body>
<input type="text" onClick="javascript:alert ('&') ;" />
<script>
alert ('&') ;
</script>
</body>
</html>
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 ?
Merci
Yliur
[toc] | [next] | [standalone]
| From | Paul Gaborit <Paul.Gaborit@invalid.invalid> |
|---|---|
| Date | 2015-07-07 11:26 +0200 |
| Message-ID | <wt9mvz8co8e.fsf@mirabeau.mines-albi.fr> |
| In reply to | #2927 |
À (at) Tue, 7 Jul 2015 09:05:22 +0200,
Yliur <yliur@free.fr> écrivait (wrote):
> 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/>
[toc] | [prev] | [next] | [standalone]
| From | Yliur <yliur@free.fr> |
|---|---|
| Date | 2015-07-08 00:55 +0200 |
| Message-ID | <20150708005512.4c92e7ce@free.fr> |
| In reply to | #2929 |
Le Tue, 07 Jul 2015 11:26:41 +0200 Paul Gaborit <Paul.Gaborit@invalid.invalid> a écrit : > > À (at) Tue, 7 Jul 2015 09:05:22 +0200, > Yliur <yliur@free.fr> écrivait (wrote): > > > 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.
[toc] | [prev] | [standalone]
Back to top | Article view | fr.comp.lang.javascript
csiph-web