diff options
Diffstat (limited to 'talermerchantdemos/blog/articles/br/javascript-trap.html')
-rw-r--r-- | talermerchantdemos/blog/articles/br/javascript-trap.html | 323 |
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 – 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 – 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 – 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 – se sua funcionalidade e propósito são +independentes da página na qual ele veio – 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 – 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 – 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 – 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"><gnu@gnu.org></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"><webmasters@gnu.org></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"> + + <web-translators@gnu.org></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"><web-translators@gnu.org></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 © 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"><rafaelff@gnome.org></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> |