Pergunta

Esta questão já tem uma resposta aqui:

Existe alguma maneira de esconder ou criptografar o código JavaScript para impedir as pessoas de ver, copiar, e / ou modificar programas proprietários?

Foi útil?

Solução

Você pode ofuscar-lo, mas não há nenhuma maneira de protegê-la completamente.

exemplo obfuscator: https://obfuscator.io http://www.javascriptobfuscator.com/Default.aspx

Outras dicas

Não, não é possível. Se ele é executado no navegador do cliente, ele deve ser baixado pelo navegador do cliente. É bem simples de se usar Fiddler para inspecionar a sessão HTTP e obter quaisquer js arquivos baixados.

Existem truques que você pode usar. Um dos mais óbvia é a de empregar um obfuscator javascript.

Então, novamente, ofuscação só previne espionagem casual, e does not impedir as pessoas de elevação e usando seu código.

Você pode tentar action script compilado na forma de um filme flash.

Enquanto todo mundo geralmente concorda que a criptografia Javascript é uma má idéia , existem alguns pequenos casos de uso onde a abrandar o ataque é melhor do que nada. Você pode começar com YUI Compressor (como @ Ben Alpert) disse, ou JSMin, estragar a beleza, ou muitos mais.

No entanto, o processo principal em que eu quero realmente 'esconder coisas' é quando eu estou publicando um endereço de e-mail. Nota, há o problema do Chrome quando você clica em 'Inspect Element'. Ela vai mostrar o seu código original: cada vez. É por isso que ofuscação é geralmente considerado como sendo a melhor maneira de ir.

Na mesma nota, eu tomo um ataque de duas frentes, puramente para abrandar spam. I Ofuscação / apoucar os js e, em seguida, executá-lo novamente através de um codificador (novamente, este segundo passo é completamente inútil em cromo).

Embora não seja exatamente um codificador de Javascript puro, a melhor html codificador que tenho encontrado é http://hivelogic.com/enkoder/ . Ele vai se transformar isto:

<script type="text/javascript">
//<![CDATA[
<!--
var c=function(e) { var m="mail" + "to:webmaster";var a="somedomain"; e.href = m+"@"+a+".com";  
};
//-->
//]]>
</script>
<a href="#" onclick="return c(this);"><img src="images/email.png" /></a>

a este:

<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=50){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o" +
".substr(0,ol);}f(\")87,\\\"meozp?410\\\\=220\\\\s-dvwggd130\\\\#-2o,V_PY420" +
"\\\\I\\\\\\\\_V[\\\\\\\\620\\\\o710\\\\RB\\\\\\\\610\\\\JAB620\\\\720\\\\n\\"+
"\\{530\\\\410\\\\WJJU010\\\\|>snnn|j5J(771\\\\p{}saa-.W)+T:``vk\\\"\\\\`<02" +
"0\\\\!610\\\\'Dr\\\\010\\\\630\\\\400\\\\620\\\\700\\\\\\\\\\\\N730\\\\,530" +
"\\\\2S16EF600\\\\;420\\\\9ZNONO1200\\\\/000\\\\`'7400\\\\%n\\\\!010\\\\hpr\\"+
"\\= -cn720\\\\a(ce230\\\\500\\\\f730\\\\i,`200\\\\630\\\\[YIR720\\\\]720\\\\"+
"r\\\\720\\\\h][P]@JHADY310\\\\t230\\\\G500\\\\VBT230\\\\200\\\\Clxhh{tzra/{" +
"g0M0$./Pgche%Z8i#p`v^600\\\\\\\\\\\\R730\\\\Q620\\\\030\\\\730\\\\100\\\\72" +
"0\\\\530\\\\700\\\\720\\\\M410\\\\N730\\\\r\\\\530\\\\400\\\\4420\\\\8OM771" +
"\\\\`4400\\\\$010\\\\t\\\\120\\\\230\\\\r\\\\610\\\\310\\\\530\\\\e~o120\\\\"+
"RfJjn\\\\020\\\\lZ\\\\\\\\CZEWCV771\\\\v5lnqf2R1ox771\\\\p\\\"\\\\tr\\\\220" +
"\\\\310\\\\420\\\\600\\\\OSG300\\\\700\\\\410\\\\320\\\\410\\\\120\\\\620\\" +
"\\q)5<: 0>+\\\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;" +
"721=%y;++y)87<i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noit" +
"cnuf\")"                                                                     ;
while(x=eval(x));
//-->
//]]>
</script>

Talvez seja suficiente para abrandar alguns bots de spam. Eu não tive qualquer spams vêm através de usar este (! Ainda).

Um dos melhores compressores (não especificamente um obscurecimento) é o YUI Compressor .

O JavaScript é uma linguagem de script e, portanto, estadias em formato legível até que é hora para que possa ser interpretado e executado pelo tempo de execução de JavaScript.

A única maneira de escondê-lo parcialmente, pelo menos, das mentes menos técnicos, é para ofuscar.

Obfuscation torna mais difícil para os seres humanos para lê-lo, mas não impossível para o conhecimento técnico.

Se você tem alguma coisa em particular que você deseja esconder (como um algoritmo proprietário), colocar isso no servidor, ou colocá-lo em um filme Flash e chamá-lo com JavaScript. Escrevendo ActionScript é muito semelhante a escrever JavaScript, e você pode se comunicar entre JavaScript e ActionScript. Você pode fazer o mesmo com o Silverlight, mas o Silverlight não tem a penetração do Flash faz.

No entanto, lembre-se de que os telemóveis podem executar o JavaScript, mas não Silverlight ou Flash, então você está minando seus usuários móveis se você vai com Flash ou Silverlight.

A única maneira segura de proteger o seu código não é doá-la. Com a implementação do cliente, não há como evitar o cliente ter acesso ao código.

Portanto, a resposta curta é: Você não pode fazê-lo

A resposta mais longa está considerando flash ou Silverlight. Embora eu acredite Silverlight terá prazer em dar os seus segredos com refletor em execução no cliente.

Eu não tenho certeza se algo simular existe com a plataforma Flash.

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