Devo me preocupar com 'pirataria Javascript'?


11

Se eu escrever um aplicativo Javascript do lado do cliente (com um pouco de interação do servidor), como posso impedir que as pessoas copiem os arquivos Javascript em seu próprio site? Eu deveria, afinal?

Respostas:


34

Você deveria se importar? Não.

Por quê? Porque não há nada que você possa realmente fazer sobre isso.

Alguns sugeriram previsivelmente ofuscação. Isso funciona para Java e .Net, mas Python, Javascript e Perl são todos texto simples, então há muito pouco que você pode realmente fazer. O valor do seu site é sem dúvida o lado do servidor, portanto não se preocupe com o Javascript.


1
Se eu conseguir descobrir o que preciso saber sobre o Java desmontado (supostamente) ofuscado, acho que posso gerenciar o Javascript e dificilmente sou um especialista em "hackers" ou engenharia reversa. "A informação anseia por ser livre" (citação que ouvi em algum lugar).

2
O Javascript tem uma defesa inata: está ligada ao código do servidor, o que é inacessível. Ofuscação é um placebo. Também torna mais difícil diagnosticar os relatórios de erros que você recebe. Se alguém vai rasgá-lo fora (e eu acho que você está exagerando o valor de seu código JS), você não pode fazer muito

1
E qual foi o truque legal em questão?

2
Os votos negativos me fazem rir. Javascript é melhor usado como um utilitário para aprimorar seu site. O único código que vale a pena proteger é o código que expõe informações sobre o funcionamento interno do seu site e da sua empresa. Para começar, nenhuma dessas coisas pertence ao script do cliente!

1
@ Jim: eu não sei. Acho que a contagem atualmente é de 17 votos positivos, 8 votos negativos e, por estar no limite diário, meu representante dessa resposta é ... -16.

14

O melhor que você pode fazer é ofuscar o código para que outras pessoas tenham dificuldade em modificá-lo. Obviamente, você mantém uma cópia do original.

Como bônus, o código ofuscado deve ser menor e, portanto, mais rápido de carregar.


Isso se chama minimização de Javascript, não é?
31411 Jonathan Leffler

4
minification realmente
Matt Briggs

9

Por que você se preocupa? Vejo duas razões para isso: 1) Você está escrevendo uma biblioteca JavaScript comercial. Solução: obtenha outro plano de negócios, as bibliotecas JavaScript tendem a ser gratuitas. Talvez você possa ganhar dinheiro em um pequeno nicho de empresas, mas é provável que elas não usem códigos copiados ilegalmente.

2) Você se preocupa com o fato de seu concorrente copiar seu site. Se o fizerem, você pode ter certeza de que estará sempre um passo à frente deles. O mais provável é que eles escrevam seu próprio código e copiem a aparência e o comportamento do seu site, e nada pode salvá-lo, exceto para obter patentes estúpidas de software, por exemplo, compras com apenas um clique na Amazon.

Uau, não se preocupe. Coloque um aviso de direitos autorais pedindo às pessoas que lhe digam se elas usam suas coisas. Se um número suficiente de pessoas fizer isso, use o fato de que você criou uma biblioteca útil para obter crédito entre os geeks, o que provavelmente será benéfico a longo prazo.


É uma aplicação web, não uma biblioteca :). Obrigado por # 2.

6

Não. Não tente "proteger" uma linguagem de script do lado do cliente. Ofuscação não funciona. A minificação tem seus usos (mas a antipirataria não é uma delas)

Eu também recomendaria não reduzir o seu código, a menos que você receba milhares de acessos por dia, onde alguns kilobytes extras por solicitação serão uma diferença notável (e só faça isso depois que você compactar todas as imagens que estiver usando corretamente, o que poupará você muito mais que alguns KB, configure o cache corretamente e assim por diante) ..

Mesmo se você minimizar / ofuscar o Javascript, as pessoas ainda poderão copiá-lo de maneira bastante trivial em seu próprio site. Vai ser um pouco mais difícil de modificar, mas, dependendo do que o script faz, isso pode não importar. Por exemplo, o editor WMD mencionado pelo pessoal é fornecido, para uso público, minificado.

A ofuscação e a minificação podem ser semelhantes, mas se você ofuscasse o código adequadamente, seria necessário reescrever grandes segmentos dele para dificultar a compreensão. Isso torna o código mais complicado e muito mais difícil de lidar (por você) introduzirá bugs. Se o seu Javascript se tornar buggy, isso evitará a pirataria, já que ninguém vai querer usá-la (ou roubá-la) .. mas, errar, isso não é bom.

Uma das grandes vantagens do Javascript é que qualquer pessoa pode clicar com o botão direito do mouse / visualizar o código-fonte e aprender Javascript olhando para o código ativo e funcionando. Se você está preocupado com as pessoas que olham e copiam o código, a web / Javascript não é ' o idioma certo ..

Eu recomendaria colocar um comentário no início de todos os seus .jsarquivos e <script>blocos, com suas informações (nome, site) e uma licença de algum tipo. Dependendo do código, talvez colocando um aviso dizendo "Se você usar todo ou parte deste código em um projeto, informe-me!" pode ser muito mais eficaz do que "Nunca use esse código para qualquer outra finalidade!"


4

Você pode ofuscar (ou pelo menos minificar) o código para desencorajar isso (embora não seja imparável para quem tem tempo. Por exemplo, a desobstrução do editor WMD do StackOverflow (mas isso foi por um bom motivo!)).

Qualquer código que você colocar na interface será público e estará disponível para todos verem / usarem.


O editor WMD não foi ofuscado, apenas foi minificado.

A redução do JavaScript tem o efeito colateral de ofuscá-lo também ... var va = fa (); é tão ofuscado.
Unkwntech

4

Por que se preocupar com isso? Se vale a pena roubar seus scripts, você pode torná-los de código aberto e obter ajuda para aprimorá-los.


Além disso, você também potencialmente recebe crédito e um bom PR por eles. Se você não pode fazer essas coisas funcionarem para você no sentido comercial convencional, veja como você pode fazê-las funcionar para você de outras maneiras.
Jon Hopkins

4

Você não pode realmente, pois é uma linguagem interpretada que é sempre entregue no formato de código-fonte. Mesmo ofuscação não vai ajudar muito se o pirata estiver motivado o suficiente.

(Exemplo de caso: o editor StackOverflow WMD , que poderia ser - estritamente falando - ser visto como pirataria, embora eu saiba que Jeff e Dana só tiveram boas intenções)


4

Não. Você não deve se preocupar.

Se sua empresa depende do sigilo do seu código JavaScript, há algum problema sério.

Caso contrário, apenas não se incomode. Pode ser que você tente minimizar o código JavaScript para acelerar o carregamento das páginas.


3

Uso o GWT (o Google Web Toolkit) para escrever aplicativos da Web, nos quais o código é todo escrito em Java e pode ser depurado e testado com ferramentas centradas em Java, mas é convertido em JavaScript para lançamento.

Quando não está no modo PRETTYou DETAILED, o JavaScript gerado pelo GWT é altamente otimizado e ofuscado, tornando extremamente impraticável a engenharia reversa. (Um ofuscador JavaScript tradicional fornecerá uma parte desses benefícios - mas não onde as otimizações dependem da capacidade do GWT de realizar análises detalhadas de remoção de ramificação e caminho de código).

Dito isto, em geral, eu tenho -1 em ofuscação - significa, por exemplo, que clientes legítimos são menos capazes de ajudá-lo a descobrir seus problemas, mesmo quando possuem habilidades de desenvolvimento e uma cópia do FireBug. Você é o autor original - conhece melhor o código do que qualquer outra pessoa e isso oferece uma vantagem competitiva em relação a alguém que está tentando executar uma imitação barata; além disso, se algum desses concorrentes estiver realmente ganhando dinheiro real com algo que roubou sem permissão, isso os abrirá com a retirada desse dinheiro (ou, potencialmente, triplicar a quantia) em um processo; a concorrência legítima e séria não seguirá esse caminho, e por que se preocupar com o outro tipo?


2

Usamos muito código Javascript (e muito do lado do servidor) para nosso aplicativo Web e optamos por "ofuscar" os Javascripts removendo espaços em branco, quebras de linha etc. - isso não protegerá realmente o seu código, mas dificulte muito a leitura e a compreensão, e provavelmente outros não se incomodarão devido ao esforço envolvido.

A razão pela qual fazemos isso, no entanto, não é tanto que não queremos que ninguém copie partes do nosso código, mas desencorajar nossos parceiros / clientes a quem entregamos o código de fazer modificações diretamente em "nossos arquivos" (para evitar problemas quando a próxima atualização estiver instalada) ...

Nota: A ofuscação tem uma desvantagem da qual você deve estar ciente: no entanto, se precisar depurar esse código de script, você mesmo não poderá trabalhar com a informação ofuscada, portanto isso sempre envolverá a cópia do arquivo 'legível' para o arquivo servidor primeiro.


2
Eu não chamaria a formatação de Javascript em um editor ou o uso de alguma forma de "impressora bonita" para fazer muito esforço. Reduzir essas coisas pode ser útil para reduzir a largura de banda (ou seja, minify), mas é tudo.

Se o arquivo Javascript for grande, será muito trabalhoso. Além disso, "impressoras bonitas" não funcionam bem (ou não funcionam) no tipo de arquivos "uma única linha contém todo o código".

1

Partindo do princípio de que qualquer javascript suficientemente bom será captado por outros, que tal nadar com a corrente e aproveitar ao máximo?

Coloque uma licença nele que permita o uso e, ao mesmo tempo, exija atribuição. Talvez com uma cláusula não comercial, como algumas variantes do Creative Commons, se você realmente precisar.


1

A maior parte da lógica de seu aplicativo deve ser do lado do servidor. Javascript deve lidar apenas com coisas da GUI e interações simples com o servidor. Se o seu código Javascript contiver lógica de aplicativo suficiente para que você esteja preocupado com alguém roubá-lo, provavelmente está fazendo algo errado.


0

Se você possui segredos comerciais, pode mover as partes mais sensíveis do código para o ActionScript (Flash). É essencialmente a mesma linguagem do JavaScript e é armazenada em formato tokenizado.


0

Se você está preocupado com determinados hackers hardcore roubando seu código, desculpe, não há nada que você possa fazer. Mas existem maneiras de torná-lo inconveniente para ladrões casuais. Uma maneira relativamente fácil de fazer isso é para carregar algumas partes usando XMLHttpRequeste eval()eles; isso pode ser disfarçado como (ou incluído) em algo que obtém dados JSON e os utiliza para preencher a página.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.