Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.javascript > #2927 > unrolled thread

Échappement html et javascript

Started byYliur <yliur@free.fr>
First post2015-07-07 09:05 +0200
Last post2015-07-08 00:55 +0200
Articles 3 — 2 participants

Back to article view | Back to fr.comp.lang.javascript


Contents

  É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

#2927 — Échappement html et javascript

FromYliur <yliur@free.fr>
Date2015-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 "&amp;" é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 ('&amp;') ;" />
    <script>
      alert ('&amp;') ;
    </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]


#2929

FromPaul Gaborit <Paul.Gaborit@invalid.invalid>
Date2015-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]


#2931

FromYliur <yliur@free.fr>
Date2015-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