summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/it/javascript-trap.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/it/javascript-trap.html')
-rw-r--r--talermerchantdemos/blog/articles/it/javascript-trap.html299
1 files changed, 168 insertions, 131 deletions
diff --git a/talermerchantdemos/blog/articles/it/javascript-trap.html b/talermerchantdemos/blog/articles/it/javascript-trap.html
index be75529..d565e7c 100644
--- a/talermerchantdemos/blog/articles/it/javascript-trap.html
+++ b/talermerchantdemos/blog/articles/it/javascript-trap.html
@@ -1,181 +1,214 @@
-<!--#set var="PO_FILE"
- value='<a href="/philosophy/po/javascript-trap.it.po">
- https://www.gnu.org/philosophy/po/javascript-trap.it.po</a>'
- --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html"
- --><!--#set var="DIFF_FILE" value="/philosophy/po/javascript-trap.it-diff.html"
- --><!--#set var="OUTDATED_SINCE" value="2019-02-21" -->
+<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
<!--#include virtual="/server/header.it.html" -->
-<!-- Parent-Version: 1.86 -->
+<!-- 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>La trappola JavaScript</title>
+<title>La trappola JavaScript - Progetto GNU - Free Software Foundation</title>
<!--#include virtual="/philosophy/po/javascript-trap.translist" -->
<!--#include virtual="/server/banner.it.html" -->
-<!--#include virtual="/server/outdated.it.html" -->
+<!--#include virtual="/philosophy/ph-breadcrumb.it.html" -->
+<!--GNUN: OUT-OF-DATE NOTICE-->
+<!--#include virtual="/server/top-addendum.it.html" -->
+<div class="article reduced-width">
<h2>La trappola JavaScript</h2>
-<p>di <a href="http://www.stallman.org/">Richard Stallman</a></p>
+<address class="byline">di <a href="https://www.stallman.org/">Richard Stallman</a></address>
<p><strong>Forse ogni giorno eseguite software non libero senza rendervene
-conto, attraverso il vostro web browser.</strong></p>
+conto, attraverso il vostro browser.</strong></p>
<!-- any links that used to point to the appendices should point to
free-your-javascript.html instead. -->
-<blockquote>
+<div class="announcement">
+<hr class="no-display" />
<p>Per i webmaster: ci sono <a
href="/software/librejs/free-your-javascript.html">molti modi</a> di
indicare la licenza dei programmi JavaScript in un sito.</p>
-</blockquote>
+<hr class="no-display" />
+</div>
-<p>Nella comunità del software libero, l'idea che <a
-href="/philosophy/free-software-even-more-important.html"> i programmi non
-liberi maltrattino i propri utenti</a> è familiare. Alcuni di noi difendono
-la libertà rifiutandosi categoricamente di installare software proprietario;
-molti altri considerano la non-libertà un punto negativo per il programma.</p>
+<p>La comunità del software libero è ben consapevole dell'idea che <a
+href="/philosophy/free-software-even-more-important.html">i programmi non
+liberi maltrattano gli utenti</a>. Alcuni di noi difendono la propria
+libertà rifiutandosi categoricamente di installare software
+proprietario. Molti altri considerano che la mancanza di libertà costituisce
+un duro colpo al programma.</p>
<p>Molti utenti sono a conoscenza del fatto che questo problema si applica ai
plug-in che i browser offrono di installare, visto che possono essere sia
liberi che non liberi. Ma i browser eseguono altri programmi non liberi per
i quali non vi chiedono il permesso o vi avvisano: i programmi che le pagine
web contengono o includono da altri siti. Questi programmi sono spesso
-scritti in JavaScript, anche se alle volte sono scritti in altri linguaggi.</p>
+scritti in JavaScript, anche se a volte sono scritti in altri linguaggi.</p>
-<p>JavaScript (ufficialmente ma raramente chiamato ECMAScript) era usato un
-tempo per vari fronzoli non essenziali nelle pagine web come effetti visuali
-di navigazione. Era quindi accettabile considerare questi come una mera
+<p>JavaScript (ufficialmente ma raramente chiamato ECMAScript) un tempo veniva
+utilizzato per vari fronzoli non essenziali nelle pagine web, come effetti
+visuali e di navigazione. Era quindi accettabile considerarli come una mera
estensione del linguaggio HTML più che come software vero e proprio, e così
ignorare il problema.</p>
<p>Alcuni siti continuano ad usare JavaScript in quella maniera, mentre molti
-lo usano per grandi programmi che svolgono operazioni complesse. Per
-esempio, Google Docs prova a scaricare nella vostra macchina un programma
-JavaScript che pesa mezzo megabyte e talmente compresso da poterlo chiamare
-Obfuscript perché mancante di commenti e di spazi e popolato da metodi dai
-nomi lunghi un singolo carattere. Il codice sorgente di un programma è la
-forma preferita per poterlo modificare; il codice compresso non è codice
-sorgente, ed il vero codice sorgente di questo programma non è accessibile
-dall'utente.</p>
-
-<p>Oltre ad essere non liberi, molti di questi programmi sono malware perché <a
-href="http://github.com/w3c/fingerprinting-guidance/issues/8">spiano gli
-utenti</a>. Inoltre alcuni siti usano servizi che registrano <a
+lo usano per grandi programmi che svolgono operazioni complesse. Per esempio
+Google Docs prova a installare nel vostro browser un JavaScript che pesa
+mezzo megabyte, in una forma compattata che potremmo chiamare
+Obfuscript. Questa versione compattata è ottenuta dal codice sorgente,
+togliendo gli spazi aggiuntivi che rendono il codice leggibile, le note
+esplicative che lo rendono comprensibile, e sostituendo i nomi significativi
+con brevi nomi arbitrari in modo che non si riesca a capire cosa vogliono
+dire.</p>
+
+<p>Una parte del significato di <a href="/philosophy/free-sw.html">software
+libero</a> è che gli utenti devono poter aver accesso al codice sorgente del
+programma. Il sorgente di un programma è la forma preferita dai
+programmatori per modificare un programma: incluse spaziature tra i
+caratteri, commenti e uso di nomi significativi. Il codice compattato è un
+falso e inutile sostituto del codice sorgente: il vero sorgente di questi
+programmi non viene reso disponibile agli utenti, quindi gli utenti non
+possono capirlo; pertanto questi programmi non sono liberi.</p>
+
+<p>Oltre ad essere non liberi, molti di questi programmi sono <em>malware</em>
+perché <a
+href="https://github.com/w3c/fingerprinting-guidance/issues/8">spiano gli
+utenti</a>. Peggio ancora, alcuni siti usano servizi che registrano <a
href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/">tutte
-le azioni dell'utente mentre visita pagina</a>. Questi servizi in teoria
-"eliminano" i dati sensibili che il sito non dovrebbe raccogliere, ma anche
-se questo fosse vero il problema comunque rimane: questi servizi forniscono
-al sito informazioni che esso non dovrebbe ricevere.</p>
+le azioni dell'utente mentre visita la pagina</a>. Questi servizi in teoria
+“eliminano” i dati sensibili che il sito non dovrebbe raccogliere, ma anche
+se fosse vero il problema comunque rimarrebbe: questi servizi inviano al
+sito informazioni che non dovrebbe ricevere.</p>
-<p>I browser di solito non vi comunicano di aver caricato dei programmi
+<p>I browser di solito non vi informano di aver caricato dei programmi
JavaScript. Alcuni browser forniscono un'opzione per disabilitare JavaScript
del tutto, ma anche se siete a conoscenza di questo problema, identificare e
bloccare i programmi non banali e non liberi non è facile e persino nella
comunità del software libero la maggior parte degli utenti non ne è a
conoscenza, anche per via del silenzio dei browser.</p>
-<p>È possibile rilasciare un programma JavaScript come software libero se si
-distribuisce il suo codice sorgente sotto una licenza libera. Se il
-programma è indipendente (nel senso che il suo funzionamento e scopo non
-dipendono dalla pagina che lo conteneva) questo va bene: lo si può copiare
-su un file nel proprio computer, modificarlo, ed eseguirlo in un browser. Ma
-questo caso non è comune.</p>
-
-<p>Nel caso più comune, i programmi JavaScript sono fatti per funzionare in una
-specifica pagina o uno specifico sito, e a sua volta la pagina, o il sito,
-funziona solo se questi sono disponibili. Allora si ha un altro problema:
-anche se il codice sorgente del programma è disponibile, i browser non
-offrono un modo di eseguire la vostra versione modificata del programma al
-posto dell'originale quando visitate una pagina. L'effetto è comparabile
-alla tivoizzazione, anche se non così difficile da sormontare.</p>
+<p>Dobbiamo chiarire un possibile equivoco: il linguaggio JavaScript non è
+intrinsecamente migliore o peggiore per la libertà degli utenti di qualsiasi
+altro linguaggio. È possibile rilasciare un programma JavaScript come
+software libero se si distribuisce il suo codice sorgente sotto una licenza
+libera. Se il programma è indipendente (nel senso che il suo funzionamento e
+scopo non dipendono dalla pagina che lo conteneva) va bene. Lo si può
+copiare su un file nel proprio computer, modificarlo ed eseguirlo in un
+browser. È anche possibile creare un pacchetto per installarlo, proprio come
+altri programmi liberi, e invocarlo da shell. I JavaScript non hanno un
+profilo morale diverso da quelle dei programmi C.</p>
+
+<p>Parliamo di Trappola JavaScript quando un programma JavaScript viene fornito
+in una pagina Web visitata dagli utenti. Questi programmi JavaScript sono
+scritti per funzionare solamente in una particolare pagina o sito, e la
+pagina o sito dipendono da loro per funzionare.</p>
+
+<p>Supponiamo di copiare e modificare il codice JavaScript della pagina. Allora
+sorge un altro problema: anche se il codice sorgente del programma è
+disponibile, i browser non offrono un modo per poter eseguire la versione
+modificata del programma al posto dell'originale quando viene visitata una
+pagina. L'effetto è comparabile alla tivoizzazione anche se, in linea di
+principio, meno difficile da superare.</p>
<p>JavaScript non è l'unico linguaggio che i siti web usano per i programmi
-inviati agli utenti. Flash offre di programmare attraverso una variante
-estesa di JavaScript; se arriveremo ad avere uno strumento libero per Flash
-abbastanza completo, dovremo comunque scontrarci con il problema dei
-programmi Flash non liberi. Silverlight è in procinto di porre un problema
-simile a Flash e se possibile peggiore, visto che Microsoft lo usa come
-piattaforma per codec non liberi. Un sostituto libero per Silverlight non
-può funzionare per il mondo libero a meno che dei codec liberi non vengano
-inclusi con esso.</p>
+inviati agli utenti. Flash permetteva di programmare attraverso una variante
+estesa di JavaScript, ma ormai è una tecnologia che sta
+scomparendo. Silverlight è in procinto di porre un problema simile a Flash
+ma peggiore, visto che Microsoft lo usa come piattaforma per codec non
+liberi. Un sostituto libero per Silverlight non può funzionare per il mondo
+libero a meno che dei codec liberi non vengano inclusi con esso.</p>
<p>Anche le applet Java vengono eseguite dal browser e pongono simili
problematiche. In generale, ogni sistema di applet pone simili
-problematiche. Avere un ambiente di esecuzione libero per un'applet ci porta
+problemi. Avere un ambiente di esecuzione libero per un'applet ci porta solo
a scontrarci con questo problema.</p>
-<p>Teoricamente è possibile programmare in HTML e CSS, ma in pratica è
-difficile riuscire a fare qualcosa di significativo usando la limitata
-programmabilità disponibile con queste due tecnologie. Questi programmi
-dovrebbero essere liberi, ma il CSS non è comunque un problema (nel 2016)
-per la libertà degli utenti.</p>
+<p>Teoricamente è possibile programmare in HTML e CSS, ma in pratica questa
+possibilità è limitata e poco pratica; anche solo riuscire a realizzarci
+qualcosa richiede complessi smanettamenti. Questi programmi dovrebbero
+essere liberi, ma il CSS non è comunque un problema per la libertà degli
+utenti (nel 2019).</p>
<p>C'è un movimento forte che chiede ai siti web di comunicare solo tramite
-formati e protocolli liberi (alcuni dicono &quot;aperti&quot;), ovvero la
-cui documentazione viene pubblicata e che ognuno può liberamente
-implementare. Con la presenza di programmi nelle pagine web, il criterio è
-necessario ma non sufficiente. Lo stesso JavaScript, come formato, è libero,
-e l'uso di JavaScript in un sito web non è necessariamente negativo ma, come
-abbiamo già visto, nemmeno necessariamente positivo. Quando il sito
-trasmette il programma all'utente, non è abbastanza che il linguaggio in cui
-questo è stato scritto sia documentato e libero; anche il programma deve
-essere libero. &ldquo;Solo i programmi liberi trasmessi all'utente&ldquo;
-possono soddisfare il criterio di condotta appropriata per i siti web.</p>
+formati e protocolli liberi (alcuni dicono “aperti”), ovvero la cui
+documentazione viene pubblicata e ognuno può liberamente
+implementare. Tuttavia la presenza di programmi JavaScript nelle pagine Web
+rende insufficiente questo criterio. Lo stesso linguaggio JavaScript, come
+formato, è libero, e l'uso di JavaScript in un sito web non è
+necessariamente negativo. Ma come abbiamo già visto, può essere negativo se
+il programma non è libero. Quando il sito trasmette il programma all'utente,
+non basta che il linguaggio in cui questo è scritto sia documentato e
+libero, anche il programma deve essere documentato e libero. “Trasmettere
+all'utente solo programmi liberi” deve diventare uno dei criteri di un sito
+web etico.</p>
<p>Caricare ed eseguire programmi non liberi silenziosamente è uno degli
-svariati problemi posti dalle &quot;applicazioni web&quot;. Il termine
-&quot;applicazione web&quot; è stato concepito per ignorare la distinzione
-fondamentale tra software trasmesso all'utente e software in esecuzione su
-un server. Può fare riferimento ad un programma client specializzato che
-lavora a stretto contatto con un programma server specializzato. I lati
-client e server sollevano diverse questioni etiche anche quando sono così
-reciprocamente integrati da poter costituire ai fatti un singolo
-programma. Questo articolo fa riferimento solamente a ciò che riguarda
-software lato client. Ci occuperemo del lato server separatamente.</p>
+svariati problemi posti dalle “applicazioni web”. Il termine “applicazioni
+web” è stato concepito per ignorare la distinzione fondamentale tra software
+trasmesso all'utente e software in esecuzione su un server. Può fare
+riferimento ad un programma client specializzato che si esegue nel browser;
+può fare riferimento a software specializzato del server; può fare
+riferimento ad un programma client specializzato che lavora a stretto
+contatto con un programma server specializzato. I lati client e server
+sollevano questioni etiche differenti, anche quando siano così strettamente
+integrati da poter sostenere che facciano parte di un singolo
+programma. Questo articolo fa riferimento solamente a ciò che riguarda il
+software lato client. Ci occupiamo del lato server separatamente.</p>
<p>In termini pratici, come possiamo affrontare il problema del software
-JavaScript (non banale) non libero nei siti web? Il primo passo è evitare di
-eseguirlo. </p>
+JavaScript non libero e non banale nei siti web? Il primo passo è evitare di
+eseguirlo.</p>
-<p>Che cosa vuol dire &quot;non banale&quot;? Dipende da caso a caso ed è
-quindi preferibile definire un criterio semplice che offre buoni risultati
+<p>Che cosa vuol dire “non banale”? Dipende da caso a caso ed è quindi
+preferibile definire un criterio semplice che offre buoni risultati
piuttosto che cercare una risposta esatta.</p>
<p>
-La nostra politica provvisoria considera un programma JavaScript non banale
-se: </p>
+Attualmente il nostro criterio è considerare che un programma scritto in
+JavaScript non è banale se soddisfa una delle seguenti condizioni:</p>
<ul>
- <li>effettua una richiesta AJAX oppure viene caricato assieme ad altri script
-che effettuano una richiesta AJAX,</li>
+ <li>è caricato come script esterno (da un'altra pagina).</li>
+
+ <li>dichiara un array con più di 50 elementi.</li>
+
+ <li>definisce un'entità (funzione o metodo) che chiama qualcosa di diverso da
+una primitiva.</li>
+
+ <li>definisce un'entità utilizzando più di tre costrutti condizionali e cicli.</li>
+
+ <li>il codice che si trova all'esterno di metodi e funzioni chiama qualsiasi
+cosa tranne le primitive e le funzioni definite nelle righe precedenti.</li>
- <li>carica uno script esterno dinamicamente oppure viene caricato assieme ad
-altri script che lo fanno,</li>
+ <li>il codice che si trova all'esterno di metodi e funzioni contiene più di tre
+cicli o costrutti condizionali, sommati.</li>
- <li>definisce funzioni o metodi e carica uno script esterno (da html) o viene
-caricato esternamente a sua volta,</li>
+ <li>utilizza la funzione <b>eval</b>.</li>
+
+ <li>effettua chiamate Ajax.</li>
+
+ <li>utilizza la notazione a parentesi quadre per accedere alle proprietà di un
+oggetto dinamico, in questo modo <b><em>object</em>[<em>property</em>]</b>.</li>
+
+ <li>modifica il DOM.</li>
<li>usa costrutti dinamici di JavaScript che sono difficili da analizzare senza
-interpretare il programma o viene caricato assieme ad altri script che usano
-tali costrutti. Questi costrutti sono:
- <ul>
- <li>l'uso della funzione eval,</li>
- <li>la chiamata di metodi con notazione a parentesi quadre,</li>
- <li>l'uso di qualsiasi costrutto diverso da una stringa letterale con alcuni
-metodi (Obj.write, Obj.createElement, ...).</li>
- </ul>
- </li>
+interpretare il programma, oppure viene caricato assieme ad altri script che
+usano tali costrutti. Nello specifico, riguarda l'utilizzo di qualsiasi
+elemento di costruzione diverso da una stringa di caratteri costante con
+certi metodi (<b>Obj.write</b>, <b>Obj.createElement</b> e altri).</li>
</ul>
<p>Come facciamo a determinare se il codice JavaScript è libero? In un <a
-href="/licenses/javascript-labels.html">ulteriore articolo</a> proponiamo
+href="/licenses/javascript-labels.html">ulteriore articolo</a> proponiamo un
metodo con cui un programma JavaScript non banale in una pagina web può
comunicare l'indirizzo web del suo codice sorgente e la sua licenza tramite
-commenti stilizzati.</p>
+commenti formattati.</p>
-<p>Infine, è necessario che noi modifichiamo i browser liberi per rilevare e
-bloccare JavaScript non libero nelle pagine web. Il programma <a
-href="/software/librejs/">LibreJS</a> rileva JavaScript non banale e libero
-nelle pagine che visitate e lo blocca. LibreJS è parte di IceCat ed è
+<p>Infine, è necessario modificare i browser liberi per rilevare e bloccare
+JavaScript non libero e non banale nelle pagine web. Il programma <a
+href="/software/librejs/">LibreJS</a> rileva JavaScript non libero e non
+banale nelle pagine visitate e lo blocca. LibreJS è parte di IceCat ed è
disponibile come estensione per Firefox.</p>
<p>Gli utenti dei browser hanno anche bisogno di un modo facile per
@@ -187,7 +220,7 @@ codice venga modificato prima dell'esecuzione del programma. Usare un proxy
locale funziona, ma è troppo scomodo per poter essere una soluzione
pratica. Abbiamo bisogno di creare sia una soluzione affidabile e facile da
usare che dei siti per poter condividere le modifiche. Il progetto GNU
-vorrebbe consigliare dei siti che sono dedicati esclusivamente alle
+vorrebbe consigliare dei siti che siano dedicati esclusivamente alle
modifiche libere.</p>
<p>Queste funzionalità permetteranno di includere programmi JavaScript liberi
@@ -198,24 +231,27 @@ JavaScript non banali e non liberi proprio come facciamo con i programmi che
vengono convenzionalmente installati. La nostra campagna per spingere i siti
a liberare il proprio JavaScript può avere inizio.</p>
-<p>Nel frattempo, c'è un caso in cui è accettabile eseguire del JavaScript non
+<p>Comunque c'è un caso in cui è accettabile eseguire del JavaScript non
libero: per inviare una lamentela agli operatori del sito, chiedendo loro di
-liberare o altrimenti rimuovere il codice JavaScript dal loro sito. Vi prego
-di non esitare ad abilitare JavaScript temporaneamente per questo
-scopo&mdash;non dimenticate di disattivarlo una volta finito.</p>
+liberare o altrimenti rimuovere il codice JavaScript dal sito. Vi prego di
+non esitare ad abilitare JavaScript temporaneamente per questo scopo – non
+dimenticate di disattivarlo una volta finito.</p>
<!-- any links that used to point to the appendices should point to
free-your-javascript.html instead. -->
-<blockquote>
+<div class="announcement">
+<hr class="no-display" />
<p>Per i webmaster: ci sono <a
href="/software/librejs/free-your-javascript.html">molti modi</a> di
indicare la licenza dei programmi JavaScript in un sito.</p>
-</blockquote>
+<hr class="no-display" />
+</div>
<p><strong>Grazie a:</strong> <a href="/people/people.html#mattlee">Matt
-Lee</a> e <a href="http://ejohn.org">John Resig</a> per il loro aiuto nel
-definire il criterio da noi proposto ed a David Parunakian per avermi messo
-a conoscenza del problema.</p>
+Lee</a> e <a href="https://johnresig.com/">John Resig</a> per il loro aiuto
+nel definire il criterio da noi proposto ed a David Parunakian per avermi
+messo a conoscenza del problema.</p>
+</div>
<div class="translators-notes">
@@ -225,7 +261,7 @@ a conoscenza del problema.</p>
<!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.it.html" -->
-<div id="footer">
+<div id="footer" role="contentinfo">
<div class="unprintable">
<p>Per informazioni su FSF e GNU rivolgetevi, possibilmente in inglese, a <a
@@ -245,7 +281,7 @@ 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>. -->
@@ -277,23 +313,24 @@ href="/server/standards/README.translations.html">Guida alle traduzioni</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 Richard Stallman</p>
+<p>Copyright &copy; 2009-2013, 2016-2019, 2021 Richard Stallman</p>
<p>Questa pagina è distribuita secondo i termini della licenza <a rel="license"
-href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons
-Attribuzione - Non opere derivate 4.0 internazionale</a> (CC BY-ND 4.0).</p>
+href="http://creativecommons.org/licenses/by-nd/4.0/deed.it">Creative
+Commons Attribuzione - Non opere derivate 4.0 Internazionale</a> (CC BY-ND
+4.0).</p>
<!--#include virtual="/server/bottom-notes.it.html" -->
<div class="translators-credits">
<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
Tradotto da membri del gruppo dei traduttori italiani GNU. Revisioni di
-Andrea Pescetti.</div>
+Andrea Pescetti, Sebastiano Pistore, Dora Scilipoti.</div>
<p class="unprintable"><!-- timestamp start -->
-Ultimo Aggiornamento:
+Ultimo aggiornamento:
-$Date: 2019/12/30 12:08:30 $
+$Date: 2021/11/28 14:01:00 $
<!-- timestamp end -->
</p>