diff options
Diffstat (limited to 'talermerchantdemos/blog/articles/it/javascript-trap.html')
-rw-r--r-- | talermerchantdemos/blog/articles/it/javascript-trap.html | 299 |
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 "aperti"), 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. “Solo i programmi liberi trasmessi all'utente“ -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 "applicazioni web". Il termine -"applicazione 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 -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 "non banale"? 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—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"><webmasters@gnu.org></a>.</p> <web-translators@gnu.org></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 © 2009-2013, 2016, 2017, 2018 Richard Stallman</p> +<p>Copyright © 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> |