Respostas:
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.
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.
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.
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 .js
arquivos 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!"
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.
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.
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)
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 PRETTY
ou 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?
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.
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.
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.
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.
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 XMLHttpRequest
e 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.