Está a utilizar um obfuscator suficiente para garantir o meu código JavaScript?

StackOverflow https://stackoverflow.com/questions/29399

  •  09-06-2019
  •  | 
  •  

Pergunta

Estou trabalhando na construção de uma ferramenta de desenvolvimento que está escrito em JavaScript.

Este não vai ser um projeto de código aberto e será vendido (espero) como um produto comercial.

Eu estou procurando a melhor maneira de proteger o meu investimento.Está a utilizar um obfuscator (código de mangler) o suficiente para razoavelmente segura o código?

Existem outras alternativas que não conheço?

(Eu não tenho certeza se obfuscator é a palavra certa, é um dos apps que leva o seu código e o torna muito ilegível.)

Foi útil?

Solução

Eu vou te contar um segredo.Depois de entender isso, você vai se sentir muito melhor sobre o fato de que o Javascript ofuscação só é realmente útil para poupar largura de banda ao enviar scripts através de fios.

Seu código-fonte não é que vale a pena roubar.

Eu sei que isto vem como um choque para o ego, mas eu posso dizer isso com confiança, sem nunca ter visto uma linha de código que você escreveu, porque fora a muito poucos reinos de desenvolvimento no qual a sério a magia acontece, é verdade, de todo o código-fonte.

Dizer, amanhã, alguém despejou um monte de DVDs em sua porta que contém o código fonte para o Windows Vista.O que você seria capaz de fazer com ele?Claro, você pode compilá-lo e dar cópias de graça, mas isso é apenas um passo mais esforço do que copiar a versão de varejo.Você poderia meticulosamente encontrar e remover a verificação de licença de código, mas isso é algo que alguns brilhante garoto já feito para os binários.Substituir o logotipo e gráficos, fingir que você escreveu de si mesmo e de mercado-o como "Vicrosoft Mista"?Você vai ficar preso.

Você poderia gastar uma enorme quantidade de tempo a ler o código, tentando compreendê-lo e verdadeiramente "roubo de propriedade intelectual" que a Microsoft investiu no desenvolvimento do produto.Mas você ficaria desapontado.Você gostaria de encontrar o código foi uma longa série de mundano decisões, feitas uma após a outra.Alguns poderiam ser mais inteligente do que você poderia pensar.Alguns poderiam deixar você agitando sua cabeça se perguntando que tipo de macacos que eles estão a contratação de mais de lá.A maioria só fazem você dar de ombros e dizer "sim, isso é como você fazer isso."

No processo, você vai aprender muito sobre como escrever sistemas operacionais, mas que não vai machucar Microsoft.

Substitua "Vista" com o "Leopard" e os parágrafos acima não mudam um pouco.Não é a Microsoft, é software.Metade das pessoas deste site provavelmente poderia desenvolver um Estouro de Pilha clone, com ou sem olhar a fonte deste site.Eles só não.O código-fonte do Firefox e do WebKit estão aí para qualquer um ler.Agora vá escrever o seu próprio navegador a partir do zero.Veja você que, em poucos anos.

Desenvolvimento de Software é um investimento de tempo.É absoluta arrogância de imaginar que o que você está fazendo é tão especial que ninguém poderia clone sem olhar à sua origem, ou mesmo que iria fazer o seu trabalho muito mais fácil sem um acionáveis (e facilmente detectável) quantidade de recortar e colar.

Outras dicas

Eu discordo profundamente com a maioria das respostas acima.

É verdade que cada software pode ser roubado, apesar de ofuscação, mas, pelo menos, torna mais difícil para extrair e reutilização de partes individuais do software e que é o ponto.

Talvez seja mais barato e menos arriscado usar um obscurecimento do que deixar o código aberto e o combate ao tribunal depois que alguém roubou as melhores partes de nosso software e fez perigosa concorrência.

Unobfuscated código sussurra:

  • Venha, analisar-me, a reutilização de mim.Talvez você poderia fazer uma melhor software de me usando.

Ofuscado código diz:

  • Vai embora cara.É mais barato usar suas próprias idéias do que tentar quebrar-me.

Você vai lutar em uma batalha perdida se você tentar ofuscar o seu código na esperança de alguém e não roubá-lo.Você pode parar o casual navegador de ficar com ele, mas alguém dedicado quase certamente ser capaz de superar qualquer medida que você usa.

No passado, tenho visto pessoas a fazer várias coisas:

  1. Colar um monte de espaços em branco no topo da página com uma mensagem de pessoas dizendo que o código não está disponível, quando na realidade você só precisa rolar para baixo algumas páginas para chegar a ele.
  2. Executando-a através de um codificador de algum tipo, isso é tão útil como ele só pode ser executado através do decodificador.
  3. Outro método é para reduzir variável de nomes para um caractere e remover espaços em branco (esta é também uma eficiência coisa).

Existem muitos outros métodos.

No final, seus esforços são apenas prováveis para parar o casual navegador de ver as coisas.Se alguém dedicado que vem, então não há muito que você vai ser capaz de fazer.Você vai ter que conviver com isso.

O meu conselho seria para fazer um realmente incrível produto que atrai mais pessoas e vencer fora de qualquer competição por ter o melhor produto/serviço/comunidade e não mais ofuscado código.

Você está sempre confrontados com o fato de que qualquer usuário que vem à sua página de download de alguma versão de trabalho de sua fonte de Javascript.Eles vai tem o código-fonte.Ofuscando pode torná-lo muito difícil de ser reutilizado por alguém com a intenção de roubar seu trabalho duro.No entanto, em muitos casos, alguém pode até mesmo reutilizar a fonte ofuscado!Ou, no pior dos casos eles podem desvendar-lo pela mão e, eventualmente, de compreendê-lo.

Um exemplo de uma situação como a sua, pode ser Google Maps.A fonte de Javascript é claramente ofuscado.No entanto, para realmente confidencial/sensível lógica empurrar os dados para o servidor e o servidor de processamento, utilizando XMLHttpRequests (AJAX).Com este projeto você tem peças importantes no lado do servidor, muito mais controlado.

Essa é, provavelmente, o melhor que você pode fazer.Apenas esteja ciente de que alguém com bastante dedicação, pode, provavelmente, de ofuscar o seu programa.Apenas certifique-se de que você está confortável com isso antes de embarcar em seu projeto.Eu acho que o maior problema seria o controle de quem o está usando em seu site.Se alguém vai a um site com o seu código, e gosta do que faz, não importa o que eles não entendem o que o código faz, ou não pode lê-lo, quando eles podem apenas copiar o código e usá-lo em seu próprio site.

Um obfuscator não ajudam em todos, se alguém quiser descobrir o código.O código ainda existe na máquina cliente e eles podem pegar uma cópia da mesma e estudá-lo em seu lazer.

Simplesmente não há maneira de esconder o código escrito em Javascript, já que o código fonte deve ser enviado para o navegador para a execução.

Se você deseja ocultar o seu código, você tem as seguintes opções:

1) Utilizar um ambiente onde o código compilado (não de origem) é transferido para o cliente, por exemplo,Flash ou Silverlight.Eu nem tenho certeza de que é infalível, mas é muito melhor do Javascript.

2) Ter um back-end no lado do servidor que faz o trabalho e um cliente fino que só faz solicitações ao servidor.

Eu diria que sim, é o suficiente se você também certifique-se de que você compactar o código usando uma ferramenta como o Reitor Edward Packer ou semelhante.Se você pensar sobre o que é possível com ferramentas como .NET Refletor em termos de engenharia reversa de código compilado / IL .NET, você percebe que não há nada que você pode fazer para proteger completamente o seu investimento.

Por outro lado, lembre-se que pessoas que liberam o código fonte também parecem fazer muito bem, de qualquer forma - é a sua experiência que as pessoas querem mais do que a sua propriedade intelectual.

código obfuscator é suficiente para algo que precisa de proteção mínima, mas eu acho que definitivamente não o suficiente para realmente proteger você.se você está doente, você pode realmente de janeiro-mangle a coisa toda..e eu tenho certeza que existem programas para fazer isso por você.

O que está sendo dito, você não pode impedir ninguém de pirataria de suas coisas, porque elas irão, eventualmente, irá quebrar qualquer tipo de proteção que você criar, de qualquer maneira.e é espcially fácil em scripts de linguagem onde o código não compilado.

Se você estiver usando algum outro idioma, talvez ou java .NET, Você pode tentar fazer coisas como "telefonar para casa" para verificar que um número de licença corresponde a um determinado url.O que funciona se seu aplicativo é uma espécie de aplicativo on-line que vai estar online o tempo todo.Mas ter acesso a fonte, as pessoas podem facilmente ignorar essa parte.

Em suma, o javascript é uma má escolha para o que você está fazendo.
Um passo acima do que você está fazendo é talvez utilizando um webservice de back-end para obter seus dados.Deixe o webservice lidar com a autenticação/processo de verificação.Requer um pouco de trabalho para se certificar de que ele é à prova de balas, mas pode trabalho

Se isso é para um site, que, por sua natureza coloca a visualização de seu código de um menu de clique de distância, é lá realmente alguma razão para esconder alguma coisa?Se alguém quer roubar o seu código de eles provavelmente irão percorrer o esforço de fazer mesmo o mais mutilado código legível por humanos.Procure em sites comerciais, eles não ofuscar o seu código, e ninguém vai e rouba o código do google apps.Se você está realmente preocupado com o roubo de código, eu diria para escrevê-lo em alguma outra linguagem compilada.(o que, é claro, destruir toda a webapp coisa...), Mesmo então, você não está totalmente seguro, há muitos de compiladores lá fora.

Então, realmente, não há nenhuma maneira de fazer o que você quer em face de qualquer pessoa com suficiente motivação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top