summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/fr/javascript-trap.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/fr/javascript-trap.html')
-rw-r--r--talermerchantdemos/blog/articles/fr/javascript-trap.html177
1 files changed, 99 insertions, 78 deletions
diff --git a/talermerchantdemos/blog/articles/fr/javascript-trap.html b/talermerchantdemos/blog/articles/fr/javascript-trap.html
index afde8b9..4fce1d7 100644
--- a/talermerchantdemos/blog/articles/fr/javascript-trap.html
+++ b/talermerchantdemos/blog/articles/fr/javascript-trap.html
@@ -1,16 +1,23 @@
<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
<!--#include virtual="/server/header.fr.html" -->
-<!-- Parent-Version: 1.90 -->
+<!-- Parent-Version: 1.96 -->
+<!-- This page is derived from /server/standards/boilerplate.html -->
+<!--#set var="TAGS" value="essays licensing traps" -->
+<!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
<!-- This file is automatically generated by GNUnited Nations! -->
-<title>Le piège JavaScript</title>
+<title>Le piège JavaScript - Projet GNU - Free Software Foundation</title>
<!--#include virtual="/philosophy/po/javascript-trap.translist" -->
<!--#include virtual="/server/banner.fr.html" -->
+<!--#include virtual="/philosophy/ph-breadcrumb.fr.html" -->
+<!--GNUN: OUT-OF-DATE NOTICE-->
+<!--#include virtual="/server/top-addendum.fr.html" -->
+<div class="article reduced-width">
<h2>Le piège JavaScript</h2>
-<p>par <a href="http://www.stallman.org/">Richard Stallman</a></p>
+<address class="byline">par <a href="https://www.stallman.org/">Richard Stallman</a></address>
<p><strong>Vous exécutez peut-être des programmes non libres sur votre
ordinateur chaque jour sans même vous en apercevoir – par l'intermédiaire de
@@ -18,11 +25,13 @@ votre navigateur web.</strong></p>
<!-- any links that used to point to the appendices should point to
free-your-javascript.html instead. -->
-<blockquote>
-<p>À l'attention des webmestres : il y a <a
+<div class="announcement">
+<hr class="no-display" />
+<p>À l'attention des webmestres : il y a <a
href="/software/librejs/free-your-javascript.html">plusieurs moyens</a>
d'indiquer la licence des programmes JavaScript présents sur un site web.</p>
-</blockquote>
+<hr class="no-display" />
+</div>
<p>Dans la communauté du logiciel libre, l'idée que <a
href="/philosophy/free-software-even-more-important.html">les programmes non
@@ -63,18 +72,18 @@ code source (c'est-à-dire à son plan). Le code source d'un programme est la
forme préférée des programmeurs pour effectuer des modifications – et il
comprend les espaces supplémentaires, les remarques explicatives et les noms
évocateurs. Le code compacté est un substitut bidon et inutile au code
-source ; le véritable code source de ces programmes n'est pas disponible
-pour les utilisateurs, donc ces derniers ne peuvent pas le comprendre ; par
+source ; le véritable code source de ces programmes n'est pas disponible
+pour les utilisateurs, donc ces derniers ne peuvent pas le comprendre ; par
conséquent, le programme est non libre.</p>
<p>Outre qu'ils ne sont pas libres, beaucoup de ces programmes sont
<em>malveillants</em> parce qu'ils <a
-href="http://github.com/w3c/fingerprinting-guidance/issues/8">espionnent
+href="https://github.com/w3c/fingerprinting-guidance/issues/8">espionnent
l'utilisateur</a>. Pire encore, certains sites utilisent des services qui
enregistrent <a
href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/">toutes
ce que fait l'utilisateur quand il regarde une page</a>. Ces services sont
-censés « caviarder » les enregistrements pour en exclure certaines données
+censés « caviarder » les enregistrements pour en exclure certaines données
sensibles dont le site web ne doit pas avoir connaissance. Mais en admettant
même que cela soit fait de manière fiable, le but de ces services est de
donner au site d'autres données personnelles qu'il ne devrait pas posséder.</p>
@@ -84,33 +93,43 @@ programmes JavaScript. Certains d'entre eux ont un moyen de désactiver
JavaScript totalement, mais même si vous êtes conscient du problème, vous
aurez beaucoup de mal à identifier les programmes non triviaux et non libres
pour les bloquer. De toute façon, même au sein de la communauté du logiciel
-libre, la plupart des utilisateurs ne sont pas conscients de ce problème ;
+libre, la plupart des utilisateurs ne sont pas conscients de ce problème ;
le silence des navigateurs tend à le dissimuler.</p>
-<p>Il est possible de publier un programme JavaScript en tant que logiciel
-libre, en distribuant le code source sous une licence libre. Si le programme
-est autonome (c'est-à-dire si son fonctionnement et son but sont
-indépendants de la page qui l'a amené), tout va bien ; vous pouvez le copier
+<p>D'abord une mise au point : le langage JavaScript n'est pas intrinsèquement
+meilleur ou pire pour la liberté des utilisateurs que n'importe quel autre
+langage. Il est possible de publier un programme JavaScript en tant que
+logiciel libre, en distribuant le code source sous une licence libre. Si le
+programme est autonome (c'est-à-dire si son fonctionnement et son but sont
+indépendants de la page qui l'a amené), tout va bien ; vous pouvez le copier
dans un fichier sur votre machine, le modifier, puis l'exécuter en lisant ce
-fichier avec votre navigateur. Mais ce n'est pas le cas habituellement.</p>
-
-<p>Dans le cas habituel, les programmes JavaScript sont conçus pour une page ou
-un site particulier qui en dépend pour fonctionner. Alors se présente un
-autre problème : même si le code source du programme est disponible, les
+fichier avec votre navigateur. Il est même possible de l'empaqueter pour
+l'installer comme les autres programmes libres et l'invoquer avec une
+commande du shell. Ces programmes ne posent pas de problèmes éthiques
+différents de ceux des programmes C.</p>
+
+<p>Le problème du piège JavaScript s'applique lorsque le programme JavaScript
+accompagne la page web visitée par l'utilisateur. Ces programmes sont conçus
+pour fonctionner avec une page ou un site particulier, qui en dépend pour
+fonctionner.</p>
+
+<p>Supposons que vous modifiez le code JavaScript de la page. Alors se présente
+un autre problème : même si le code source du programme est disponible, les
navigateurs ne proposent aucun moyen d'exécuter votre version modifiée à la
place de l'original lorsque vous êtes sur cette page ou ce site. L'effet est
comparable à la tivoïsation bien qu'il soit, en principe, un peu moins
difficile à contourner.</p>
<p>JavaScript n'est pas le seul langage que les sites web utilisent pour les
-programmes envoyés aux utilisateurs. Flash permet la programmation à l'aide
-d'une variante étendue de JavaScript ; si un jour nous avons un lecteur
-Flash libre suffisamment complet, il nous faudra traiter le problème des
-programmes Flash non libres. Silverlight est susceptible de poser un
-problème similaire à Flash, en pire, car Microsoft l'utilise comme
-plateforme pour des codecs non libres. Un remplacement libre de Silverlight
-ne ferait pas l'affaire pour le monde du libre, à moins qu'il ne propose
-normalement des codecs de remplacement libres.</p>
+programmes envoyés aux utilisateurs. Flash permettait la programmation à
+l'aide d'une variante étendue de JavaScript, mais cette époque est révolue ;
+si un jour nous avons un lecteur Flash libre suffisamment complet, il nous
+faudra traiter le problème des programmes Flash non libres. Microsoft
+Silverlight est susceptible de poser un problème similaire à Flash, en pire,
+car Microsoft l'utilise comme plateforme pour des codecs non libres. Un
+remplacement libre de Silverlight ne ferait pas l'affaire pour le monde du
+libre, à moins qu'il ne propose normalement des codecs de remplacement
+libres.</p>
<p>Les applets Java s'exécutent aussi dans le navigateur et soulèvent des
problèmes similaires. En général, n'importe quel système d'applet pose ce
@@ -118,32 +137,32 @@ genre de problème. Avoir un environnement d'exécution libre pour un applet
ne fait que déplacer le problème.</p>
<p>Il est théoriquement possible de programmer en HTML et CSS, mais en pratique
-les possibilités sont limitées et c'est assez pénible ; le simple fait de
+les possibilités sont limitées et c'est assez pénible ; le simple fait de
réaliser quelque chose par cette technique est un hack impressionnant. De
tels programmes doivent être libres, mais aujourd'hui, en 2019, cela ne pose
pas de réel problème pour la liberté de l'utilisateur.</p>
<p>Un fort mouvement s'est développé qui appelle les sites web à ne communiquer
-qu'avec des formats et des protocoles libres (certains disent « ouverts ») ;
+qu'avec des formats et des protocoles libres (certains disent « ouverts ») ;
c'est-à-dire des formats dont la documentation est publiée et que chacun est
libre de mettre en œuvre. Cependant, la présence de programmes JavaScript
dans les pages web rend ce critère insuffisant. Le langage JavaScript
-lui-même, en tant que format, est libre ; utiliser JavaScript dans un site
+lui-même, en tant que format, est libre ; utiliser JavaScript dans un site
web n'est donc pas nécessairement mauvais. Cependant, comme nous l'avons vu
plus haut, cela peut être mauvais si le programme JavaScript est non
libre. Quand le site transmet un programme à l'utilisateur, il ne suffit pas
-que le programme soit écrit dans un langage documenté et libre d'entraves ;
-ce programme doit aussi être libre. « Ne transmet que des programmes libres
-aux utilisateurs » ; cette règle doit faire partie des critères définissant
+que le programme soit écrit dans un langage documenté et libre d'entraves ;
+ce programme doit aussi être libre. « Ne transmet que des programmes libres
+aux utilisateurs » ; cette règle doit faire partie des critères définissant
un comportement correct des sites web.</p>
<p>Le chargement et l'exécution silencieux de programmes non libres est l'un
-des nombreux problèmes soulevés par les « applications web ». Le terme
-« application web » a été conçu pour ne pas tenir compte de la distinction
+des nombreux problèmes soulevés par les « applications web ». Le terme
+« application web » a été conçu pour ne pas tenir compte de la distinction
fondamentale entre un logiciel fourni aux utilisateurs et un logiciel
s'exécutant sur un serveur. Il peut faire référence à un programme client
-spécialisé qui s'exécute dans un navigateur ; il peut faire référence à un
-logiciel serveur spécialisé ; il peut faire référence à un programme client
+spécialisé qui s'exécute dans un navigateur ; il peut faire référence à un
+logiciel serveur spécialisé ; il peut faire référence à un programme client
spécialisé travaillant main dans la main avec un logiciel serveur
spécialisé. Les côtés client et serveur soulèvent des problèmes éthiques
différents, bien qu'ils soient si intimement intégrés qu'on pourrait les
@@ -152,52 +171,52 @@ s'occupe que du logiciel client. Nous traitons le problème du serveur
séparément.</p>
<p>Pratiquement, comment pouvons-nous traiter le problème des programmes
-JavaScript non triviaux et non libres dans les sites web ? La première étape
+JavaScript non triviaux et non libres dans les sites web ? La première étape
est de ne pas les laisser s'exécuter.</p>
-<p>Que voulons-nous dire par « non trivial » ? Puisque c'est une question
+<p>Que voulons-nous dire par « non trivial » ? Puisque c'est une question
d'interprétation, il s'agit de concevoir un critère simple qui donne de bons
résultats, plutôt que de déterminer la seule réponse correcte.</p>
<p>
Actuellement, nous considérons un programme JavaScript comme non trivial
-s'il répond à l'une des conditions suivantes :</p>
+s'il répond à l'une des conditions suivantes :</p>
<ul>
- <li>il est appelé en tant que script externe (à partir d'une autre page) ;</li>
+ <li>il est appelé en tant que script externe (à partir d'une autre page) ;</li>
- <li>il déclare un tableau contenant plus de 50 éléments ;</li>
+ <li>il déclare un tableau contenant plus de 50 éléments ;</li>
<li>il définit une entité nommée (fonction ou méthode) qui appelle autre chose
-qu'une primitive ;</li>
+qu'une primitive ;</li>
<li>il définit une entité nommée comprenant plus de trois éléments de
-construction conditionnels et une construction en boucle ;</li>
+construction conditionnels et une construction en boucle ;</li>
<li>le code n'appartenant pas aux définitions nommées appelle autre chose que
-des primitives et des fonctions définies plus haut dans la page ;</li>
+des primitives et des fonctions définies plus haut dans la page ;</li>
<li>le code n'appartenant pas aux définitions nommées comprend, au total, plus
de trois éléments de construction conditionnels et une construction en
-boucle ;</li>
+boucle ;</li>
- <li>il fait appel à <b>eval</b> ;</li>
+ <li>il fait appel à <b>eval</b> ;</li>
- <li>il fait des requêtes Ajax ;</li>
+ <li>il fait des requêtes Ajax ;</li>
<li>Pour accéder de manière dynamique aux propriétés des objets, il utilise une
notation crochet qui ressemble à <b><em>objet</em>[<em>propriété</em>]</b>.</li>
- <li>il modifie le <abbr title="Document Object Model">DOM</abbr> ;</li>
+ <li>il modifie le <abbr title="Document Object Model">DOM</abbr> ;</li>
<li>il utilise des constructions dynamiques JavaScript qui sont difficiles à
analyser sans interpréter le programme, ou bien il est chargé en même temps
-que des scripts qui utilisent de telles constructions ; cela concerne plus
+que des scripts qui utilisent de telles constructions ; cela concerne plus
précisément l'utilisation avec certaines méthodes (<b>Obj.write</b>,
<b>Obj.createElement</b>, etc.) de tout élément de construction autre qu'une
chaîne de caractères constante.</li>
</ul>
-<p>Comment savoir si du code JavaScript est libre ? Dans un <a
+<p>Comment savoir si du code JavaScript est libre ? Dans un <a
href="/licenses/javascript-labels.html">autre article</a>, nous proposons
une méthode qui permet à un programme JavaScript non trivial inclus dans une
page web d'indiquer l'URL de son code source, ainsi que sa licence, en
@@ -232,45 +251,48 @@ classiques. Notre campagne pour libérer le code JavaScript des sites web
pourra alors commencer.</p>
<p>Entre-temps, il existe un cas où il est acceptable d'exécuter un programme
-JavaScript non libre : l'envoi d'une réclamation aux opérateurs du site web
+JavaScript non libre : l'envoi d'une réclamation aux opérateurs du site web
leur demandant de libérer le code JavaScript de leur site, ou bien de
l'éliminer. N'hésitez pas à activer JavaScript temporairement pour faire ça
– mais n'oubliez pas de le désactiver après coup.</p>
<!-- any links that used to point to the appendices should point to
free-your-javascript.html instead. -->
-<blockquote>
-<p>À l'attention des webmestres : il y a <a
+<div class="announcement">
+<hr class="no-display" />
+<p>À l'attention des webmestres : il y a <a
href="/software/librejs/free-your-javascript.html">plusieurs moyens</a>
d'indiquer la licence des programmes JavaScript présents sur un site web.</p>
-</blockquote>
+<hr class="no-display" />
+</div>
<p><strong>Remerciements:</strong> Je remercie <a
href="/people/people.html#mattlee">Matt Lee</a> et <a
-href="http://ejohn.org">John Resig</a> pour leur aide dans la définition de
-notre proposition de critère, et David Parunakian pour avoir porté ce
-problème à mon attention.</p>
+href="https://johnresig.com/">John Resig</a> pour leur aide dans la
+définition de notre proposition de critère, et David Parunakian pour avoir
+porté ce problème à mon attention.</p>
+</div>
<div class="translators-notes">
<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
<hr /><b>Notes de traduction</b> <ol>
<li id="TransNote1"><a href="#TransNote1-rev"
-class="nounderline">&#8593;</a> également appelés « logiciels
-propriétaires ».<br/><br/></li>
+class="nounderline">&#8593;</a> également appelés « logiciels
+propriétaires ».<br/><br/></li>
</ol></div>
</div>
<!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.fr.html" -->
-<div id="footer">
+<div id="footer" role="contentinfo">
<div class="unprintable">
-<p>Veuillez envoyer les requêtes concernant la FSF et GNU à <a
-href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Il existe aussi <a
+<p>Veuillez envoyer les requêtes concernant la FSF et GNU à &lt;<a
+href="mailto:gnu@gnu.org">gnu@gnu.org</a>&gt;. Il existe aussi <a
href="/contact/">d'autres moyens de contacter</a> la FSF. Les liens
-orphelins et autres corrections ou suggestions peuvent être signalés à <a
-href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
+orphelins et autres corrections ou suggestions peuvent être signalés à
+&lt;<a href="mailto:webmasters@gnu.org">webmasters@gnu.org</a>&gt;.</p>
<p>
<!-- TRANSLATORS: Ignore the original text in this paragraph,
@@ -283,18 +305,17 @@ href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
&lt;web-translators@gnu.org&gt;</a>.</p>
- <p>For information on coordinating and submitting translations of
+ <p>For information on coordinating and contributing translations of
our web pages, see <a
href="/server/standards/README.translations.html">Translations
README</a>. -->
-Nous faisons le maximum pour proposer des traductions fidèles et de bonne
-qualité, mais nous ne sommes pas parfaits. Merci d'adresser vos commentaires
-sur cette page, ainsi que vos suggestions d'ordre général sur les
-traductions, à <a href="mailto:web-translators@gnu.org">
-&lt;web-translators@gnu.org&gt;</a>.</p>
-<p>Pour tout renseignement sur la coordination et la soumission des
-traductions de nos pages web, reportez-vous au <a
-href="/server/standards/README.translations.html">guide de traduction</a>.</p>
+Merci d'adresser vos commentaires sur les pages en français à &lt;<a
+href="mailto:trad-gnu@april.org">trad-gnu@april.org</a>&gt;, et sur les
+traductions en général à &lt;<a
+href="mailto:web-translators@gnu.org">web-translators@gnu.org</a>&gt;. Si
+vous souhaitez y contribuer, vous trouverez dans le <a
+href="/server/standards/README.translations.html">guide de traduction</a>
+les infos nécessaires.</p>
</div>
<!-- Regarding copyright, in general, standalone pages (as opposed to
@@ -313,7 +334,7 @@ href="/server/standards/README.translations.html">guide de traduction</a>.</p>
There is more detail about copyright years in the GNU Maintainers
Information document, www.gnu.org/prep/maintain. -->
-<p>Copyright &copy; 2009-2013, 2016, 2017, 2018, 2019 Richard Stallman</p>
+<p>Copyright &copy; 2009-2013, 2016-2019, 2021 Richard Stallman</p>
<p>Cette page peut être utilisée suivant les conditions de la licence <a
rel="license"
@@ -325,13 +346,13 @@ Commons attribution, pas de modification, 4.0 internationale (CC BY-ND
<div class="translators-credits">
<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
-Traduction : Cédric Corazza.<br /> Révision : <a
+Traduction : Cédric Corazza.<br /> Révision : <a
href="mailto:trad-gnu&#64;april.org">trad-gnu&#64;april.org</a></div>
<p class="unprintable"><!-- timestamp start -->
Dernière mise à jour :
-$Date: 2019/12/30 12:08:30 $
+$Date: 2021/10/11 10:32:11 $
<!-- timestamp end -->
</p>