Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

¿Hay alguna forma de ocultar o cifrar el código JavaScript para evitar que las personas vean, copien y / o modifiquen programas propietarios?

¿Fue útil?

Solución

Puede ofuscarlo, pero no hay forma de protegerlo por completo.

ofuscador de ejemplo: https://obfuscator.io http://www.javascriptobfuscator.com/Default.aspx

Otros consejos

No, no es posible. Si se ejecuta en el navegador del cliente, debe ser descargado por el navegador del cliente. Es bastante trivial usar Fiddler para inspeccionar la sesión HTTP y obtener los archivos js descargados.

Hay trucos que puedes usar. Una de las más obvias es emplear un ofuscador de JavaScript.

Por otra parte, la ofuscación solo previene el espionaje casual y no evita que las personas levanten y usen su código.

Puede probar un script de acción compilado en forma de película flash.

Si bien todos generalmente estarán de acuerdo en que el cifrado de Javascript es una mala idea , hay algunos casos de uso pequeños donde ralentizar el ataque es mejor que nada. Puede comenzar con YUI Compressor (como @Ben Alpert) dijo, o JSMin, Uglify, o muchos más.

Sin embargo, el caso principal en el que realmente quiero 'ocultar cosas' es cuando publico una dirección de correo electrónico. Tenga en cuenta que existe el problema de Chrome cuando hace clic en "inspeccionar elemento". Mostrará su código original: cada vez. Esta es la razón por la cual la ofuscación generalmente se considera como un mejor camino a seguir.

En esa nota, tomo un ataque de dos puntas, simplemente para ralentizar los bots de spam. Ofusco / minimizo el js y luego lo ejecuto nuevamente a través de un codificador (nuevamente, este segundo paso es completamente inútil en Chrome).

Aunque no es exactamente un codificador Javascript puro, el mejor codificador html que he encontrado es http://hivelogic.com/enkoder/ . Se convertirá esto:

<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>

en esto:

<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>

Tal vez sea suficiente para ralentizar algunos robots de spam. No he recibido ningún correo no deseado utilizando esto (! Todavía).

Uno de los mejores compresores (no específicamente un ofuscador) es el YUI Compressor .

JavaScript es un lenguaje de secuencias de comandos y, por lo tanto, permanece en forma legible para humanos hasta que es hora de que el tiempo de ejecución de JavaScript lo interprete y ejecute.

La única forma de ocultarlo parcialmente, al menos de las mentes menos técnicas, es ofuscar.

La ofuscación hace que sea más difícil para los humanos leerlo, pero no imposible para los expertos en tecnología.

Si tiene algo en particular que desea ocultar (como un algoritmo patentado), póngalo en el servidor o póngalo en una película Flash y llámelo con JavaScript. Escribir ActionScript es muy similar a escribir JavaScript, y puede comunicarse entre JavaScript y ActionScript. Puede hacer lo mismo con Silverlight, pero Silverlight no tiene la penetración que Flash tiene.

Sin embargo, recuerde que cualquier teléfono móvil puede ejecutar su JavaScript, pero no Silverlight o Flash, por lo que está paralizando a sus usuarios móviles si utiliza Flash o Silverlight.

La única forma segura de proteger su código es no regalarlo. Con la implementación del cliente, no se puede evitar que el cliente tenga acceso al código.

Entonces la respuesta corta es: No puedes hacerlo

La respuesta más larga es considerar flash o Silverlight. Aunque creo que Silverlight con mucho gusto revelará sus secretos con el reflector ejecutándose en el cliente.

No estoy seguro de si existe algo similar con la plataforma flash.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top