summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/br/javascript-trap.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/br/javascript-trap.html')
-rw-r--r--talermerchantdemos/blog/articles/br/javascript-trap.html323
1 files changed, 323 insertions, 0 deletions
diff --git a/talermerchantdemos/blog/articles/br/javascript-trap.html b/talermerchantdemos/blog/articles/br/javascript-trap.html
new file mode 100644
index 0000000..4141f1a
--- /dev/null
+++ b/talermerchantdemos/blog/articles/br/javascript-trap.html
@@ -0,0 +1,323 @@
+<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->
+
+<!--#include virtual="/server/header.pt-br.html" -->
+<!-- Parent-Version: 1.90 -->
+
+<!-- This file is automatically generated by GNUnited Nations! -->
+<title>A Armadilha do JavaScript</title>
+
+<!--#include virtual="/philosophy/po/javascript-trap.translist" -->
+<!--#include virtual="/server/banner.pt-br.html" -->
+<h2>A Armadilha do JavaScript</h2>
+
+<p>por <a href="http://www.stallman.org/">Richard Stallman</a></p>
+
+<p><strong>Você pode estar executando programas não livres em seu computador
+todo dia sem perceber &ndash; por meio de seu navegador web.</strong></p>
+
+<!-- any links that used to point to the appendices should point to
+ free-your-javascript.html instead. -->
+<blockquote>
+<p>Webmasters: há <a href="/software/librejs/free-your-javascript.html">várias
+formas</a> de indicar a licença de programas JavaScript em um site.</p>
+</blockquote>
+
+<p>Na comunidade de software livre, a ideia de que <a
+href="/philosophy/free-software-even-more-important.html"> qualquer
+programas não livre maltrata seus usuários</a> é familiar. Alguns de nós
+defendem nossa liberdade rejeitando todos os softwares proprietários em seus
+computadores. Muitos outros reconhecem a falta de liberdade como uma afronta
+ao programa.</p>
+
+<p>Muitos usuários estão cientes de que essa questão se aplica aos plug-ins que
+navegadores oferecem para instalar, já que eles podem ser livres ou não
+livres. Mas os navegadores executam outros programas não livres sem pedir
+autorização e sem avisar &ndash; programas contidos ou vinculados em páginas
+web. Esses programas são muito frequentemente escritos em JavaScript, porém
+outros linguagens também são usados.</p>
+
+<p>JavaScript (oficialmente chamado de ECMAScript, mas poucos usam este nome)
+foi, certa vez, usado para pequenas decorações estéticas em páginas web, tal
+como recursos de exibição e navegação fofas, mas não essenciais. Era
+aceitável considerá-los como mera extensões de marcação HTML, em vez de
+verdadeiros softwares, e em desconsideração da questão.</p>
+
+<p>Alguns sites ainda usam JavaScript desta forma, mas muitos o usam para
+programas maiores que fazem trabalhos maiores. Por exemplo, Google Docs
+tenta baixar para sua máquina um programa JavaScript no tamanho de meio
+megabyte, em uma forma compacta que poderíamos chamar de “Obfuscript”. Essa
+forma compactada é feita a partir do código-fonte, excluindo os espaços
+extras que tornam o código legível e as observações explicativas que o
+tornam compreensível e substituindo cada nome significativo no código por um
+nome arbitrário abreviado, para que seja possível dizer qual é seu suposto
+significado.</p>
+
+<p>Parte do <a href="/philosophy/free-sw.html">significado do software
+livre</a> é que os usuários têm acesso ao código-fonte do programa (seu
+plano). O código-fonte de um programa significa a forma preferida para os
+programadores modificarem &ndash; incluindo espaçamento útil, observações
+explicativas e nomes significativos. Código compactado é um substituto falso
+e inútil do código-fonte; o código-fonte real desses programas não está
+disponível para os usuários, portanto os usuários não podem entendê-lo;
+portanto, os programas são não livres.</p>
+
+<p>Além de ser não livre, muitos desses programas são <em>malwares</em> porque
+eles <a
+href="http://github.com/w3c/fingerprinting-guidance/issues/8">bisbilhotam o
+usuário</a>. Ainda mais desagradável, alguns sites usam serviços que
+registram <a
+href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/">todas
+as ações do usuário enquanto olha para a página</a>. Os serviços
+supostamente “redigem” os registros para excluir alguns dados confidenciais
+que o site não deve obter. Mas mesmo que isso funcione de forma confiável,
+todo o propósito desses serviços é fornecer ao site dados pessoais (de
+outras pessoas) que ele não deveria obter.</p>
+
+<p>Navegadores normalmente não lhe informam quando eles carregaram programas
+JavaScript. Alguns navegadores apresentam uma forma de desligar
+completamente o JavaScript, mas mesmo se eles estiverem cientes desta
+questão, você ainda teria um problema considerável para identificar
+programas não livres e não triviais para, então, bloqueá-los. Porém, mesmo
+na comunidade de software livre, a maioria dos usuários não estão cientes
+desta questão, o silêncio dos navegadores tende a ocultar isso.</p>
+
+<p>É possível lançar um programa JavaScript como software livre, por meio da
+distribuição do código-fonte sob uma licença de software livre. Se o
+programa é independente &ndash; se sua funcionalidade e propósito são
+independentes da página na qual ele veio &ndash; não há problema; você pode
+copiá-lo para um arquivo em sua máquina, modificá-lo e visitar aquele
+arquivo com um navegador para executá-lo. Mas este é um caso incomum.</p>
+
+<p>Geralmente, programas JavaScript são feitos para funcionar com uma página ou
+site em particular, e a página ou site depende deles para funcionar. Então,
+um outro problema surge: mesmo se o fonte do programa esteja disponível,
+navegadores não oferecem uma forma de executar sua versão modificada em vez
+do original ao visitar aquela página ou aquele site. O efeito é comparável à
+tivoização, apesar de, em princípio, não ser tão difícil de superar.</p>
+
+<p>JavaScript não é a única linguagem que sites web usam para programas
+enviados pelo usuários. O Flash oferece suporte a programação por meio de
+uma variante estendida do JavaScript; se nós alguma vez tivermos um
+reprodutor Flash livre suficientemente completo, ainda teremos que lidar com
+a questão de programas Flash não livres. Silverlight parece criar um
+problema similar ao Flash, só que pior, já que a Microsoft o usa como uma
+plataforma para codecs não livres. Um substituto livre para o Silverlight
+não faz o trabalho para o mundo livre a menos que venha codecs livres em
+substituição.</p>
+
+<p>Os applets do Java também são executados no navegador, e trazem questões
+similares. Em geral, qualquer forma de sistema de applets representa esse
+tipo de problema. Tendo um ambiente de execução livre para um applet só nos
+traz o suficiente para encontrar o problema.</p>
+
+<p>Teoricamente, é possível que programar em HTML e CSS, mas, na prática, essa
+capacidade é limitada e inconveniente; para que seja possível que o programa
+faça alguma coisa, é necessário um <cite>hack</cite> impressionante. Tais
+programas devem ser livres, mas CSS não é um problema sério para a liberdade
+dos usuários em 2019.</p>
+
+<p>Um movimento forte desenvolveu aquelas chamadas (“calls”) para sites web
+para se comunicar apenas por meio de formatos e protocolos que são livres
+(alguns dizem “abertos”); isto é, cuja documentação está publicada e a qual
+qualquer um é livre para implementar. Porém, a presença de programas
+JavaScript nas páginas web tornar aquele critério ineficiente. A linguagem
+do JavaScript em si, como um formato, é livre, e o uso de JavaScript em um
+site web não necessariamente é ruim. Porém, como já vimos acima, pode ser
+ruim &ndash; se o programa JavaScript for não livre. Quando o site transmite
+um programa para o usuário, não basta o programa estar escrito em uma
+linguagem documentada e desembaraçada; aquele programa também deve ser
+livre. “Transmita apenas programas livres para os usuários” deve se tornar
+parte do critério site web ético.</p>
+
+<p>Carregar e executar silenciosamente programas não livres é uma dentre várias
+questões levantadas por “aplicações web”. O termo “aplicações web” foi
+atribuído em total desprezo à distinção fundamental entre software entregue
+a usuários e software sendo executado em um servidor. Ele pode se referir a
+um programa especializado para cliente ser executado em um navegador; ele
+pode se referir a um software especializado para servidor; ele pode se
+referir a um programa especializado para cliente que funciona de mãos dadas
+com software especializado para servidor. Os lados de cliente e servidor
+levantam questões éticas diferentes, mesmo se eles estiverem estritamente
+integrados que eles indiscutivelmente formam partes de um único
+programa. Esse artigo tem como escopo apenas a questão do software do
+cliente. Nós vamos tratar da questão do servidor separadamente.</p>
+
+<p>Em termos práticos, como nós podemos lidar com o programa de programas
+JavaScript não livres e não triviais em sites? O primeiro passo é evitar
+executá-lo.</p>
+
+<p>O que nós queremos dizer por “não triviais”? É uma questão de grau, então
+essa é uma questão de projetar um critério simples que fornece bons
+resultados, em vez de encontrar a resposta correta.</p>
+<p>
+Nosso critério atual é considerar um programa JavaScript como não trivial se
+qualquer uma dessas condições for atendida:</p>
+
+<ul>
+ <li>ele é referido como um script externo (de outra página).</li>
+
+ <li>ele declara um vetor com mais de 50 elementos.</li>
+
+ <li>ele define uma entidade dada (função ou método) que chama qualquer outra que
+não seja a primitiva.</li>
+
+ <li>ele define uma dada entidade com mais de três construtos condicionais e
+construção de loop.</li>
+
+ <li>um código fora das definições dadas chama qualquer coisa, exceto primitivas
+e funções definidas anteriormente na página.</li>
+
+ <li>um código fora das definições dadas contém mais mais de três construtos
+condicionais e construção de loop, no total.</li>
+
+ <li>ele chama <b>eval</b>.</li>
+
+ <li>ele faz chamadas Ajax.</li>
+
+ <li>ele usa a notação de colchetes para o acesso à propriedade de objeto
+dinâmico, que se parece com <b><em>objeto</em>[<em>propriedade</em>]</b>.</li>
+
+ <li>ele altera o DOM.</li>
+
+ <li>ele usa construtos JavaScript dinâmicos que são difíceis de analisar sem
+interpretar o programa, ou é carregado junto com scripts que usam tais
+construtos. Especificamente, usando qualquer outra construtos que não uma
+string literal com determinados métodos (<b>Obj.write</b>,
+<b>Obj.createElement</b> e outros).</li>
+</ul>
+
+<p>Como nós dizemos se o código JavaScript é livre? Em um <a
+href="/licenses/javascript-labels.html">artigo separado</a>, propomos um
+método por meio da qual um programa JavaScript não trivial em uma página
+pode indicar a URL na qual seu código-fonte está localizado, e pode indicar
+sua licença também, usando comentários estilizados.</p>
+
+<p>Finalmente, precisamos mudar navegadores livres para detectar e bloquear
+JavaScript não livres e não triviais em páginas web. O programa <a
+href="/software/librejs/">LibreJS</a> detecta JavaScript não trivial e não
+livre em páginas que você visita, e os bloqueia. LibreJS está incluso no
+IceCat e disponível como uma extensão para Firefox.</p>
+
+<p>Usuários do navegador também precisam de uma facilidade conveniente para
+especificar um código JavaScript para usar <em>em vez</em> do JavaScript em
+uma certa página. (O código especificado pode ser um substituto total, ou
+uma versão modificada do programa JavaScript livre naquela página.)
+Greasemonkey chega perto de ser capaz de fazer isso, mas não muito, já que
+ele não garante modificar o código JavaScript em uma página antes daquele
+programa iniciar a execução. Usar um proxy local funciona, mas é, agora,
+inconveniente demais para ser uma solução real. Precisamos construir uma
+solução que é confiável e conveniente, assim como um site para compartilhar
+as alterações. O Projeto GNU gostaria de recomendar os sites que são
+dedicados unicamente às alterações livres.</p>
+
+<p>Esses recursos possibilitarão para um programa JavaScript incluído em uma
+página web ser livre em um senso real e prático. JavaScript não será mais um
+obstáculo em especial para nossa liberdade &ndash; não mais que C e Java são
+agora. Seremos capazes de rejeitar e até substituir os programas JavaScript
+não triviais e não livres, assim como rejeitamos e substituímos pacotes não
+livres que são oferecidos para instalação na forma comum. Nossa campanha
+para sites tornarem livres os seus JavaScript pode, então, começar.</p>
+
+<p>Neste meio tempo, há um caso no qual é aceitável executar um programa
+JavaScript não livre: para enviar uma reclamação para os operadores do site
+dizendo que eles devem tornar livre ou remover o código JavaScript do
+site. Por favor, não hesite em habilitar temporariamente JavaScript para
+fazer isso &ndash; mas lembre-se de desabilitá-lo novamente em seguida.</p>
+
+<!-- any links that used to point to the appendices should point to
+ free-your-javascript.html instead. -->
+<blockquote>
+<p>Webmasters: há <a href="/software/librejs/free-your-javascript.html">várias
+formas</a> de indicar a licença de programas JavaScript em um site.</p>
+</blockquote>
+
+<p><strong>Agradecimentos:</strong> Obrigado a <a
+href="/people/people.html#mattlee">Matt Lee</a> e <a
+href="http://ejohn.org">John Resig</a> por ajudarem na definição de nosso
+critério proposto e a David Parunakian por trazer o programa à minha
+atenção.</p>
+
+<div class="translators-notes">
+
+<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
+ </div>
+</div>
+
+<!-- for id="content", starts in the include above -->
+<!--#include virtual="/server/footer.pt-br.html" -->
+<div id="footer">
+<div class="unprintable">
+
+<p>Envie perguntas em geral sobre a FSF e o GNU para <a
+href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Também existem <a
+href="/contact/">outros meios de contatar</a> a FSF. Links quebrados e
+outras correções ou sugestões podem ser enviadas para <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>. -->
+A equipe de traduções para o português brasileiro se esforça para oferecer
+traduções precisas e de boa qualidade, mas não estamos isentos de erros. Por
+favor, envie seus comentários e sugestões em geral sobre as traduções para
+<a
+href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.
+</p><p>Consulte o <a href="/server/standards/README.translations.html">Guia
+para as traduções</a> para mais informações sobre a coordenação e o envio de
+traduções das páginas deste site.</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>Esta página está licenciada sob uma licença <a rel="license"
+href="http://creativecommons.org/licenses/by-nd/4.0/deed.pt_BR">Creative
+Commons Atribuição-SemDerivações 4.0 Internacional</a>.</p>
+
+<!--#include virtual="/server/bottom-notes.pt-br.html" -->
+<div class="translators-credits">
+
+<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
+<b>Tradução:</b> Rafael Fontenelle
+<a href="mailto:rafaelff@gnome.org">&lt;rafaelff@gnome.org&gt;</a>,
+2017-2019</div>
+
+<p class="unprintable"><!-- timestamp start -->
+Última atualização:
+
+$Date: 2020/05/22 22:05:25 $
+
+<!-- timestamp end -->
+</p>
+</div>
+</div>
+<!-- for class="inner", starts in the banner include -->
+</body>
+</html>