Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Champ cache

10 réponses
Avatar
Gloops
Bonjour tout le monde,

Je suis en train de mijoter une page maîtresse pour mon site, proposé en
plusieurs langues. Cette page maîtresse comporte une liste déroulante
pour le choix de la langue.

Comme le choix de la langue repose sur l'exécution d'un script, au
chargement de la page j'affiche dans la liste "With a script you can
display in English", "Avec un script vous pouvez afficher en Français" ...

Ensuite, un script remplace ces valeurs par les noms des langues,
respectivement "English", "Français" ...

J'ai mis en place une internationalisation dynamique, ce qui signifie
que les lignes de la liste vont s'adapter automatiquement si je fournis
une nouvelle langue pour une page.

La question qui se pose est de savoir comment stocker dans la page les
noms des langues à afficher dans la liste. J'ai pensé à un tableau, en
bas de la page, affiché sans bordures et avec des caractères blancs sur
fond blanc.

Ceci est-il susceptible d'être intercepté par un logiciel de sécurité ?
Une meilleure idée à proposer ? Il y aurait bien les champs de saisie de
type hidden, mais je ne suis pas sûr de pouvoir en mettre plusieurs sous
le même nom.

10 réponses

Avatar
Nicolas George
Gloops wrote in message <fthio0$b1a$:
J'ai mis en place une internationalisation dynamique, ce qui signifie
que les lignes de la liste vont s'adapter automatiquement si je fournis
une nouvelle langue pour une page.


J'ai un peu peur de ce qui est décrit ici. Le HTTP possède un système de
négociation de la langue automatique ; je vois personnellement d'un très
mauvais oeil les sites qui n'utilisent pas ce système et réimplémentent leur
propre système à leur sauce, avec tous les problèmes que ça implique
(fonctionnement différent du reste du monde, préférences pas transmises
quand on passe sur une autre machine, mauvaise interaction avec les
bookmarks, etc.).

La question qui se pose est de savoir comment stocker dans la page les
noms des langues à afficher dans la liste. J'ai pensé à un tableau, en
bas de la page, affiché sans bordures et avec des caractères blancs sur
fond blanc.

Ceci est-il susceptible d'être intercepté par un logiciel de sécurité ?
Une meilleure idée à proposer ? Il y aurait bien les champs de saisie de
type hidden, mais je ne suis pas sûr de pouvoir en mettre plusieurs sous
le même nom.


Le plus logique pour stocker dans une page des informations qui doivent être
disponible pour un script mais pas directement affichées, c'est de les
mettre dans un script, justement.

Cependant, pour assurer la cohérence de l'ensemble, il serait plus efficace
de faire en sorte que la liste des langues soit récupérée auprès de
l'autorité qui en a la charge. Ça peut se faire en faisant faire par le
script une requête qui tombera sur le 406 correspondant à la page courante
(avec « Accept-Language: *;q=0 » dans les entêtes).

Ceci dit, tout ça n'a qu'un lien extrêmement ténu avec la sécurité...

Avatar
Gloops
Nicolas George a écrit, le 09/04/2008 10:01 :
Gloops wrote in message <fthio0$b1a$:
J'ai mis en place une internationalisation dynamique, ce qui signifie
que les lignes de la liste vont s'adapter automatiquement si je fournis
une nouvelle langue pour une page.


J'ai un peu peur de ce qui est décrit ici. Le HTTP possède un système de
négociation de la langue automatique ; je vois personnellement d'un très
mauvais oeil les sites qui n'utilisent pas ce système et réimplémentent leur
propre système à leur sauce, avec tous les problèmes que ça implique
(fonctionnement différent du reste du monde, préférences pas transmises
quand on passe sur une autre machine, mauvaise interaction avec les
bookmarks, etc.).


Alors, va donc jeter un coup d'œil là :

http://www.zailes.org

Tu verras que le système de négociation de la langue automatique de HTTP
est bien utilisé, et qu'il n'y a pas de perturbations sur les signets de
l'utilisateur.


Le plus logique pour stocker dans une page des informations qui doivent être
disponible pour un script mais pas directement affichées, c'est de les
mettre dans un script, justement.


Seulement voilà, j'en ai besoin en dynamique, donc je ne peux pas écrire
un script fixe.


Cependant, pour assurer la cohérence de l'ensemble, il serait plus efficace
de faire en sorte que la liste des langues soit récupérée auprès de
l'autorité qui en a la charge. Ça peut se faire en faisant faire par le
script une requête qui tombera sur le 406 correspondant à la page courante
(avec « Accept-Language: *;q=0 » dans les entêtes).


C'est quoi le 406 ?


Ceci dit, tout ça n'a qu'un lien extrêmement ténu avec la sécurité...


Là où je posais la question d'un rapport avec la sécurité, c'est sur la
façon d'inclure des informations non visibles dans le code de la page.


Avatar
Nicolas George
Gloops wrote in message <ftispg$mag$:
Alors, va donc jeter un coup d'


Avatar
Gloops
Nicolas George a écrit, le 09/04/2008 19:26 :
Gloops wrote in message <ftispg$mag$:
Alors, va donc jeter un coup d'�"il là :

http://www.zailes.org

Tu verras que le système de négociation de la langue automatique de HTTP
est bien utilisé, et qu'il n'y a pas de perturbations sur les signets de
l'utilisateur.


Je viens d'aller voir, et il y a précisément un des problèmes que je
redoutais : après le choix de la langue, on arrive sur une page statique (ce
qui est bien) dont la langue n'est pas négociée mais figée dans l'URL. Si on
bookmarke cette page et qu'on y revient directement, la négociation de
langue ne se fait pas.


Effectivement, je n'ai pas terminé la migration, je n'ai écrit la
sélection de langue nouvelle version (je veux dire, avec la localisation
implicite et la localisation explicite tels que l'entend Microsoft en
version asp.net) que pour la page d'accueil et quelques pages qui
gravitent avec, comme celle qui fournit les explications au lecteur, et
les pages qui donnent les exemples de Internet Explorer et Firefox pour
la sélection implicite des langues.

Tu y accèdes en cliquant sur le lien au milieu de la page, c'est pour ça
que le délai d'affichage de la page a été porté à une trentaine de
secondes, pour qu'on ait le temps de lire (mais peut-être que ça ne
suffit pas encore ?).

Tu remarqueras qu'en passant là à partir de la page d'accueil et
inversement, les choix de langue tant implicite qu'explicite sont
conservés d'une page à l'autre.

Pour ce qui est de la migration des pages de contenu, je ferai ça quand
j'en aurai fini avec la question de la page maîtresse. A ce moment, il y
aura un temps où les favoris seront obsolètes (et c'est dommage puisque
je suis en tête de liste de résultats sur un des thèmes traités sans
rien avoir fait pour ça), étant donné que la langue figure dans l'URL,
alors que le système asp permet de fournir la même URL quelle que soit
la langue. Je pense que la solution consistera à laisser cohabiter les
deux au moins pendant un temps.

C'est vrai que là, il n'est plus vraiment question de sécurité :)
Je vais ouvrir un nouveau sous-fil ça sera plus clair.


Seulement voilà, j'en ai besoin en dynamique, donc je ne peux pas écrire
un script fixe.


N'importe quoi peut être généré côté serveur, un script comme le reste.

C'est quoi le 406 ?


Le code de retour HTTP qui signale qu'une page existe bien, mais n'est pas
représentable avec les contraintes posées par le client. Typiquement, quand
une page existe, mais dans une langue que le client n'accepte pas.


Ah, je crois qu'il y a eu ça une fois dans mes stats, je me demandais ce
qu'il pouvait y avoir derrière.


Avatar
Gloops
Bonjour tout le monde,

Je pose une question que j'ai déjà posée sous une forme différente, en
espérant être plus clair cette fois.

Je crée des pages sur un site qui génère le contenu dynamiquement (au
format asp). Je veux faire faire un choix à l'utilisateur grâce à une
liste déroulante.

Le choix dans la liste déroulante ne sera pris en compte, par la force
des choses, que si le navigateur autorise l'exécution des scripts.
Aussi, je voudrais que la liste déroulante fasse apparaître cette
information.

Je vais donc demander au serveur de mettre au chargement de la page,
dans la liste déroulante, les informations suivantes :
- avec un script, choix 1
- avec un script, choix 2

En fonction de la configuration du site (gérée en dehors de la page),
des choix supplémentaires peuvent apparaître.

Une fois que cette page s'est chargée, si le navigateur autorise les
scripts, les intitulés dans la liste sont remplacés (par un script) par :
- choix 1
- choix 2

Il m'apparaît donc nécessaire que la page contienne ces informations
(choix 1, choix 2) sous une forme invisible, de façon que le script
puisse aller les y récupérer pour les mettre dans la liste déroulante.

J'ai pensé à un tableau, sans bordure, mais écrit en blanc sur fond blanc.

Je sais que des images en-dessous d'un certain format génèrent des
alertes de certains outils de sécurité, qu'en est-il de caractères
blancs sur fond blanc ?
Quelqu'un aurait-il une meilleure proposition ?
Avatar
Gloops
Nicolas George a écrit, le 09/04/2008 19:26 :
N'importe quoi peut être généré côté serveur, un script comme le reste.


Ah, j'ai loupé cette phrase.

Pour ce qui est de générer le script dans l'entête de page, j'ai posé la
question dans le newsgroup sur csharp, mais je n'ai pas encore de réponse.

Il y aurait bien la solution de le générer dans un fichier script qui
porterait le même nom que la page au même titre que les fichiers de
ressources. Je crains que ça soit plus lourd à gérer.

Avatar
Gloops
Nicolas George a écrit, le 09/04/2008 19:26 :
C'est quoi le 406 ?


Le code de retour HTTP qui signale qu'une page existe bien, mais n'est pas
représentable avec les contraintes posées par le client. Typiquement, quand
une page existe, mais dans une langue que le client n'accepte pas.


Il faut que je retrouve ce code dans mes stats, logiquement on ne
devrait le retrouver qu'avec une page statique, puisque les pages asp
s'affichent dans une langue par défaut (en l'occurrence l'Anglais) si
aucune des langues proposées n'est choisie par le client dans les options.


Avatar
Olivier Miakinen

Je pose une question que j'ai déjà posée sous une forme différente, en
espérant être plus clair cette fois.

[...]

Il m'apparaît donc nécessaire que la page contienne ces informations
(choix 1, choix 2) sous une forme invisible, de façon que le script
puisse aller les y récupérer pour les mettre dans la liste déroulante.


Même sous cette nouvelle forme je ne vois pas de lien avec la sécurité.

J'ai pensé à un tableau, sans bordure, mais écrit en blanc sur fond blanc.


Beurk. :-(

Quelqu'un aurait-il une meilleure proposition ?


J'en ai même deux.

1)
Poser ta question sur fr.comp.infosystemes.www.auteurs

2)
<div style='display:none' id='choix1'>
... les intitulés du choix 1...
</div>
<div style='display:none' id='choix2'>
... les intitulés du choix 2...
</div>
...

Avatar
Gloops
Olivier Miakinen a écrit, le 10/04/2008 00:46 :
Je pose une question que j'ai déjà posée sous une forme différente, en
espérant être plus clair cette fois.

[...]

Il m'apparaît donc nécessaire que la page contienne ces informations
(choix 1, choix 2) sous une forme invisible, de façon que le script
puisse aller les y récupérer pour les mettre dans la liste déroulante.


Même sous cette nouvelle forme je ne vois pas de lien avec la sécurité.

J'ai pensé à un tableau, sans bordure, mais écrit en blanc sur fond blanc.


Beurk. :-(

Quelqu'un aurait-il une meilleure proposition ?


J'en ai même deux.

1)
Poser ta question sur fr.comp.infosystemes.www.auteurs


ça, je note, parce que des questions, il risque bien d'y en avoir
d'autres :)


2)
<div style='display:none' id='choix1'>
... les intitulés du choix 1...
</div>
<div style='display:none' id='choix2'>
... les intitulés du choix 2...
</div>
...


Ah, oui, là je sens que j'ai bien fait de venir.
ça risque moins de rendre McAfee nerveux, j'imagine.

ça peut d'ailleurs être assez rapide à adapter à partir de mon tableau,
il suffit de mettre <div style='display:none'> avant, et </div> après.

Je crois qu'il y a des options de navigateurs qui rendent ces styles
inopérants, mais à ce moment-là, pas la peine que les gens se plaignent
que ce n'est pas clair :)

Merci.


Avatar
Olivier Miakinen

1)
Poser ta question sur fr.comp.infosystemes.www.auteurs


ça, je note, parce que des questions, il risque bien d'y en avoir
d'autres :)


J'y fais suivre la discussion, quoique pour une partie de ma réponse ça
pourrait aussi bien être sur fr.comp.lang.javascript (que tu peux noter
aussi).

2)
<div style='display:none' id='choix1'>
... les intitulés du choix 1...
</div>
<div style='display:none' id='choix2'>
... les intitulés du choix 2...
</div>
...


Ah, oui, là je sens que j'ai bien fait de venir.
ça risque moins de rendre McAfee nerveux, j'imagine.

ça peut d'ailleurs être assez rapide à adapter à partir de mon tableau,
il suffit de mettre <div style='display:none'> avant, et </div> après.


Si le code à l'intérieur du div en question correspond exactement à ce
que tu veux afficher dans le cas du choix numéro 1, alors rien de plus
simple pour le faire apparaître en JavaScript :
document.getElementById('choix1').style.display = '';
... et pour le cacher de nouveau, en choisissant l'option numéro 2 :
document.getElementById('choix1').style.display = 'none';
document.getElementById('choix2').style.display = '';

Je crois qu'il y a des options de navigateurs qui rendent ces styles
inopérants, mais à ce moment-là, pas la peine que les gens se plaignent
que ce n'est pas clair :)


Le seul navigateur pour lequel les utilisateurs pouvaient avoir intérêt
à désactiver les CSS, c'était Netscape 4. Depuis, les CSS sont devenus
la norme incontournable et tout le monde les utilise.

[ copie et suivi vers fr.comp.infosystemes.www.auteurs ]