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.html342
1 files changed, 342 insertions, 0 deletions
diff --git a/talermerchantdemos/blog/articles/fr/javascript-trap.html b/talermerchantdemos/blog/articles/fr/javascript-trap.html
new file mode 100644
index 0000000..afde8b9
--- /dev/null
+++ b/talermerchantdemos/blog/articles/fr/javascript-trap.html
@@ -0,0 +1,342 @@
+<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
+
+<!--#include virtual="/server/header.fr.html" -->
+<!-- Parent-Version: 1.90 -->
+
+<!-- This file is automatically generated by GNUnited Nations! -->
+<title>Le piège JavaScript</title>
+
+<!--#include virtual="/philosophy/po/javascript-trap.translist" -->
+<!--#include virtual="/server/banner.fr.html" -->
+<h2>Le piège JavaScript</h2>
+
+<p>par <a href="http://www.stallman.org/">Richard Stallman</a></p>
+
+<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
+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
+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>
+
+<p>Dans la communauté du logiciel libre, l'idée que <a
+href="/philosophy/free-software-even-more-important.html">les programmes non
+libres nuisent à leurs utilisateurs</a> est familière. Certains d'entre nous
+défendent leur liberté en interdisant l'accès de leur machine à tous les
+logiciels privateurs<a id="TransNote1-rev"
+href="#TransNote1"><sup>1</sup></a> et beaucoup d'autres considèrent que la
+non-liberté d'un programme est un point négatif.</p>
+
+<p>Beaucoup d'utilisateurs sont conscients que ce problème s'applique aussi aux
+modules que les navigateurs proposent d'installer, puisqu'ils peuvent être
+libres ou non. Mais les navigateurs exécutent d'autres programmes non libres
+sans vous demander votre avis ni même vous prévenir – des programmes inclus
+dans des pages web ou vers lesquels elles ont des liens. Ces programmes sont
+le plus souvent écrits en JavaScript, bien que d'autres langages puissent
+être utilisés.</p>
+
+<p>JavaScript (dont le nom officiel, mais peu utilisé, est ECMAScript) servait
+autrefois à orner les pages web de fioritures mineures, comme des
+fonctionnalités de navigation et d'affichage agréables mais non
+essentielles. Il était acceptable de les considérer comme de pures
+extensions du langage de balises HTML et d'ignorer le problème.</p>
+
+<p>Certains sites utilisent encore JavaScript de cette façon, mais beaucoup
+l'utilisent pour des programmes conséquents réalisant des tâches
+importantes. Par exemple, Google Docs essaie d'installer dans votre
+navigateur un programme JavaScript qui pèse un demi mégaoctet, sous une
+forme compactée que nous pourrions appeler ObfuScript. Cette forme compactée
+s'obtient à partir du code source en supprimant les espaces supplémentaires
+qui rendent le code lisible ainsi que les remarques explicatives qui le
+rendent compréhensible, et en remplaçant chaque nom évocateur par un nom
+court arbitraire pour qu'on ne puisse pas savoir ce qu'il est censé
+représenter.</p>
+
+<p>Le logiciel libre est <a href="/philosophy/free-sw.html">par définition</a>
+un logiciel qui, entre autres, permet aux utilisateurs d'avoir accès à son
+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
+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
+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
+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>
+
+<p>Normalement, les navigateurs ne vous disent pas quand ils chargent des
+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 ;
+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
+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
+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>
+
+<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
+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
+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 ») ;
+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
+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
+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
+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é 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
+considérer comme parties d'un seul et même programme. Cet article ne
+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
+est de ne pas les laisser s'exécuter.</p>
+
+<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>
+
+<ul>
+ <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éfinit une entité nommée (fonction ou méthode) qui appelle autre chose
+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>
+
+ <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>
+
+ <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>
+
+ <li>il fait appel à <b>eval</b> ;</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 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
+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
+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
+utilisant des commentaires stylisés.</p>
+
+<p>Enfin, nous devons modifier les navigateurs pour qu'ils détectent et
+bloquent le JavaScript non trivial et non libre dans les pages web. Le
+programme <a href="/software/librejs/">LibreJS</a> [en] détecte le
+JavaScript non libre et non trivial dans les pages que vous visitez, et le
+bloque. LibreJS est intégré à IceCat et peut être ajouté à Firefox en tant
+que module complémentaire.</p>
+
+<p>Les utilisateurs de navigateurs ont aussi besoin d'une fonctionnalité facile
+d'emploi, indiquant le code JavaScript à <em>substituer</em> au JavaScript
+d'une page donnée (le code spécifié pourrait être un remplacement total, ou
+une version modifiée du programme JavaScript libre de cette
+page). Greasemonkey arrive presque à le faire, mais pas tout à fait, car il
+ne garantit pas de modifier le code JavaScript d'une page avant que le
+programme ne commence à s'exécuter. On peut utiliser un proxy local, mais
+c'est trop malcommode actuellement pour constituer une réelle solution. Nous
+avons besoin de construire une solution fiable et pratique, ainsi que des
+sites pour partager les modifications. Le projet GNU voudrait recommander
+les sites dédiés exclusivement aux modifications libres.</p>
+
+<p>Ces fonctionnalités rendront possible pour un programme JavaScript inclus
+dans une page web d'être réellement libre. JavaScript ne sera plus un
+obstacle particulier à notre liberté – pas plus que C et Java ne le sont
+maintenant. Nous serons en mesure de rejeter et même de remplacer les
+programmes JavaScript non triviaux et non libres, tout comme nous avons
+rejeté et remplacé les paquets non libres pour les installations
+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
+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
+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>
+
+<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>
+
+<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>
+</ol></div>
+</div>
+
+<!-- for id="content", starts in the include above -->
+<!--#include virtual="/server/footer.fr.html" -->
+<div id="footer">
+<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
+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>
+
+<p>
+<!-- TRANSLATORS: Ignore the original text in this paragraph,
+ replace it with the translation of these two:
+
+ We work hard and do our best to provide accurate, good quality
+ translations. However, we are not exempt from imperfection.
+ Please send your comments and general suggestions in this regard
+ to <a href="mailto:web-translators@gnu.org">
+
+ &lt;web-translators@gnu.org&gt;</a>.</p>
+
+ <p>For information on coordinating and submitting 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>
+</div>
+
+<!-- Regarding copyright, in general, standalone pages (as opposed to
+ files generated as part of manuals) on the GNU web server should
+ be under CC BY-ND 4.0. Please do NOT change or remove this
+ without talking with the webmasters or licensing team first.
+ Please make sure the copyright date is consistent with the
+ document. For web pages, it is ok to list just the latest year the
+ document was modified, or published.
+
+ If you wish to list earlier years, that is ok too.
+ Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
+ years, as long as each year in the range is in fact a copyrightable
+ year, i.e., a year in which the document was published (including
+ being publicly visible on the web or in a revision control system).
+
+ 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>Cette page peut être utilisée suivant les conditions de la licence <a
+rel="license"
+href="http://creativecommons.org/licenses/by-nd/4.0/deed.fr">Creative
+Commons attribution, pas de modification, 4.0 internationale (CC BY-ND
+4.0)</a>.</p>
+
+<!--#include virtual="/server/bottom-notes.fr.html" -->
+<div class="translators-credits">
+
+<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
+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 $
+
+<!-- timestamp end -->
+</p>
+</div>
+</div>
+<!-- for class="inner", starts in the banner include -->
+</body>
+</html>