Ocultar um script do código-fonte das páginas

Eu gostaria de esconder um pedaço de Javascript do meu código-fonte. Maneiras que eu tenho pensado para fazer isso estão usando um PHP incluem com o arquivo de script nele, mas isso não parece funcionar.

Alguém tem quaisquer sugestões para mim? Se você precisar de uma cópia do meu script, basta perguntar.

Agradecemos antecipadamente, Callum

Você não pode esconder completamente o Javascript do cliente, como todos aqui declararam.

O que você pode fazer é tentar tornar o seu JavaScript o mais legível possível.

Uma maneira de fazer isso é ofuscar isso. Antes de ofuscar, nomeie suas funções e variables ​​aleatoriamente, para que elas não signifiquem nada relacionado ao que elas representam, etc. Assim, no final, seu código ficará assim:

 

Ou tente criar o mesmo conteúdo usando linguagens do lado do servidor, como PHP ou Python.

Você não pode impedir que um usuário veja sua fonte JavaScript … não importa como você a entrega. Qualquer usuário que esteja tentando analisar sua fonte provavelmente tem o conhecimento necessário para isso. Você está entregando um script para o cliente rodar, portanto, seja na página, incluído na página, AJAX buscado ou embalado, não importa, ainda é visível e facilmente copiado em algum nível.

Você não pode ocultar a fonte JavaScript, pois ela precisa ser transferida para o navegador para execução. O que você pode fazer é ofuscar seu código usando um compressor. Eu acredito que o jQuery usa o compilador Closure do Google.

Seja qual for o mecanismo de ocultação que usamos, o script deve ser executado no navegador. Enviar uma function como um object JSON serializado pode ajudar um pouquinho, no entanto, quando se examina o object XHR usando as ferramentas de inspeção específicas do navegador, isso fica visível novamente.

Aqui está uma demonstração simples do que eu estava tentando dizer. O código crítico do Javascript é dado abaixo

 if (xmlHttp.readyState == 4) { ret_value=xmlHttp.responseText; var myObject = eval('(' + ret_value + ')'); document.getElementById("result").value=myObject(addend_1,addend_2); } 

Como você pode ver, a function real que executa a computação é retornada pelo script php e não é visualizável no arquivo de origem. Uma palavra de caucanvas, eu usei eval aqui, que deve ser usado apenas quando aceitar dados de fonts confiáveis ​​(veja minha nota abaixo). Como mencionado anteriormente, embora isso ajude seus esforços de ocultação de código, pode-se visualizar a function usando as ferramentas de inspeção disponíveis em todos os navegadores modernos ou enviando para o URL usando curl ou qualquer outro meio programático.

EDIT: Depois de ler em JSON e testar JSON.parse, é meu entendimento que o JSON não pode ser usado para methods e serve apenas para intercâmbio de dados, veja aqui .

Acho que o melhor que você pode fazer é 1) colocá-lo em um arquivo .js separado e vinculá-lo (isso irá removê-lo da fonte HTML principal) e 2) ofuscar o código, isso irá confundir qualquer um (qualquer ser humano que seja quem quer ler, mas ainda tem todo o código. Como o JavaScript é executado no lado do cliente, uma cópia do script será baixada SEMPRE para o computador do usuário. Se você codificar o que quer que seja em um idioma executado no servidor, isso impediria que as pessoas visualizassem o código-fonte.