online - ¿Está usando un ofuscador lo suficiente para asegurar mi código JavaScript?
ofuscar codigo javascript online (9)
Estoy trabajando en la construcción de una herramienta de desarrollo escrita en JavaScript.
Este no será un proyecto de código abierto y se venderá (con suerte) como producto comercial.
Estoy buscando la mejor manera de proteger mi inversión. ¿Está utilizando un ofuscador (generador de código) suficiente para asegurar razonablemente el código?
¿Hay otras alternativas de las que no tengo conocimiento?
(No estoy seguro si obfuscator es la palabra correcta, es una de las aplicaciones que toma tu código y lo hace muy ilegible).
Eso es probablemente lo mejor que puedes hacer. Solo tenga en cuenta que cualquier persona con suficiente dedicación, probablemente pueda desvincular su programa. Solo asegúrate de que te sientas cómodo con eso antes de embarcarte en tu proyecto. Creo que el mayor problema con esto sería controlar quién lo está usando en su sitio. Si alguien va a un sitio con su código y le gusta lo que hace, no importa que no entiendan qué es lo que hace el código, o que no lo puedan leer, cuando solo puedan copiar el código, y Úselo en su propio sitio.
Si esto es para un sitio web, que por su propia naturaleza pone la visualización de su código a un solo clic del menú, ¿hay realmente alguna razón para ocultar algo? Si alguien quiere robar su código, lo más probable es que haga el esfuerzo de hacer que incluso el código más mutilado sea legible por humanos. Mira los sitios web comerciales, no ofuscan su código, y nadie sale y roba el código de las aplicaciones de Google. Si realmente está preocupado por el robo de código, yo abogaría por escribirlo en algún otro lenguaje compilado. (lo que, por supuesto, destruye todo el asunto de la aplicación web). Incluso entonces, no estás totalmente seguro, hay muchos compiladores de compilación por ahí.
Entonces, realmente, no hay forma de hacer lo que quieras frente a alguien con suficiente motivación.
Siempre se enfrenta al hecho de que cualquier usuario que acceda a su página web descargará alguna versión de trabajo de su fuente de Javascript. Tendrán el código fuente. Ofuscarlo puede hacer que sea muy difícil ser reutilizado por alguien con la intención de robarle el trabajo duro. Sin embargo, en muchos casos, ¡alguien puede incluso reutilizar la fuente ofuscada! O en el peor de los casos, pueden desenredarlo a mano y finalmente comprenderlo.
Un ejemplo de una situación como la tuya podría ser Google Maps . La fuente de Javascript está claramente ofuscada. Sin embargo, para la lógica realmente privada / sensible, envían los datos al servidor y hacen que el servidor procese esa información utilizando XMLHttpRequests (AJAX). Con este diseño tiene las partes importantes del lado del servidor, mucho más controladas.
Un ofuscador no te ayudará en absoluto si alguien quiere descubrir el código. El código todavía existe en la máquina del cliente y pueden tomar una copia y estudiarlo cuando lo deseen.
Simplemente no hay forma de ocultar el código escrito en Javascript, ya que el código fuente debe entregarse al navegador para su ejecución.
Si quiere ocultar su código, tiene las siguientes opciones:
1) Use un entorno donde el código compilado (no fuente) se descargue al cliente, por ejemplo, Flash o Silverlight. Ni siquiera estoy seguro de que sea infalible, pero sin duda es mucho mejor que Javascript.
2) Tener un back-end en el lado del servidor que hace el trabajo y un thin client que solo realiza solicitudes al servidor.
Yo diría que sí, es suficiente si también te aseguras de que compresas el código también usando una herramienta como Dean Edward''s Packer o similar. Si piensa en lo que es posible con herramientas como .NET Reflector en términos de código compilado de ingeniería inversa / IL en .NET, se dará cuenta de que no hay nada que pueda hacer para proteger completamente su inversión.
Por otro lado, recuerde que las personas que publican su código fuente también parecen estar haciendo bastante bien de todos modos: según su experiencia, la gente quiere algo más que su propiedad intelectual.
el ocultador de código es suficiente para algo que necesita protección mínima, pero creo que definitivamente no será suficiente para realmente protegerte. si eres paciente, puedes desmantelar todo el asunto ... y estoy seguro de que hay programas para hacerlo por ti.
Dicho esto, no puedes evitar que nadie piratee tus cosas porque eventualmente romperán cualquier tipo de protección que crees. y es especialmente fácil en el lenguaje guionado donde el código no se compila.
Si está utilizando otro idioma, tal vez Java o .NET, puede intentar hacer cosas como "llamar a casa" para verificar que un número de licencia coincida con una url determinada. Lo cual funciona si tu aplicación es algún tipo de aplicación en línea que se va a conectar en línea todo el tiempo. Pero al tener acceso a la fuente, las personas pueden eludir fácilmente esa parte.
En resumen, javascript es una mala elección para lo que estás haciendo.
Un paso adelante de lo que está haciendo es tal vez usar un backend de servicio web para obtener sus datos. Deje que el servicio web maneje el proceso de autenticación / verificación. Requiere un poco de trabajo para asegurarse de que sea a prueba de balas, pero podría funcionar
Vas a pelear una batalla perdida si tratas de ofuscar tu código con la esperanza de que alguien no lo robe. Puede evitar que el navegador casual lo haga, pero alguien dedicado casi seguramente podrá superar cualquier medida que use.
En el pasado, he visto personas hacer varias cosas:
- Pegue una gran cantidad de espacios en blanco en la parte superior de la página con un mensaje que le diga a la gente que el código no está disponible, cuando en realidad solo necesita desplazarse unas pocas páginas para obtenerlo.
- Ejecutarlo a través de un codificador de algún tipo, esto es tan útil ya que solo se puede ejecutar a través del decodificador.
- Otro método es reducir nombres de variables a un carácter y eliminar espacios en blanco (esto también es una cuestión de eficiencia).
Hay muchos otros métodos.
Al final, tus esfuerzos solo evitarán que el navegador casual vea tus cosas. Si alguien dedicado viene, entonces no hay mucho que puedas hacer. Tendrás que vivir con esto.
Mi consejo sería crear un producto realmente impresionante que atraiga a la mayoría de la gente y vencer a cualquier competencia al tener el mejor producto / servicio / comunidad y no el código más ofuscado.
Estoy profundamente en desacuerdo con la mayoría de las respuestas anteriores.
Es cierto que cada software puede ser robado a pesar de la ofuscación pero, al menos, hace más difícil extraer y reutilizar partes individuales del software y ese es el punto.
Tal vez sea más barato y menos peligroso usar una ofuscación que dejar el código abierto y pelear en la corte después de que alguien robó las mejores partes de nuestro software y cometió una concurrencia peligrosa.
Susurro de código desacralizado:
- Vamos, analízame, vuelve a utilizarme. Tal vez podrías hacer un mejor software usándome.
El código ofuscado dice:
- Vete amigo. Es más barato usar tus propias ideas que tratar de descifrarme.
Voy a contarte un secreto. Una vez que lo comprenda, se sentirá mucho mejor con respecto al hecho de que la ocultación de JavaScript solo es realmente útil para ahorrar ancho de banda al enviar scripts a través del cable.
Tu código fuente no vale la pena robar.
Sé que esto es una conmoción para el ego, pero puedo decirlo con confianza sin haber visto nunca una línea de código que hayas escrito, porque fuera de los pocos ámbitos del desarrollo donde ocurre la magia seria, es cierto para todo el código fuente.
Digamos, mañana, alguien arrojó un montón de DVD en su puerta que contiene el código fuente de Windows Vista. ¿Qué podrías hacer con eso? Claro, podrías compilarlo y regalar copias, pero eso es solo un paso más esfuerzo que copiar la versión comercial. Puede encontrar y eliminar minuciosamente el código de verificación de licencia, pero eso es algo que un niño inteligente ya ha hecho a los binarios. Reemplace el logotipo y los gráficos, imagine que lo escribió usted mismo y comercialícelo como "Vicrosoft Mista". Te atraparán.
Podría pasar una gran cantidad de tiempo leyendo el código, tratando de entenderlo y verdaderamente "robando la propiedad intelectual" que Microsoft invirtió en el desarrollo del producto. Pero estarías decepcionado. Encontrarías que el código era una larga serie de decisiones mundanas, hechas una después de la otra. Algunos serían más inteligentes de lo que podrías pensar. Algunos te dejarían sacudiendo la cabeza preguntándote qué tipo de monos están contratando allí. La mayoría simplemente te haría encoger los hombros y decir "sí, así es como haces eso".
En el proceso, aprenderá mucho sobre cómo escribir sistemas operativos, pero eso no perjudicará a Microsoft.
Reemplaza "Vista" con "Leopard" y los párrafos anteriores no cambian un bit. No es Microsoft, es software . La mitad de las personas en este sitio probablemente podría desarrollar un clon , con o sin mirar el origen de este sitio. Ellos simplemente no tienen. El código fuente de Firefox y WebKit están disponibles para que cualquiera pueda leer. Ahora ve a escribir tu propio navegador desde cero. Nos vemos en unos años.
El desarrollo de software es una inversión de tiempo. Es una gran arrogancia imaginar que lo que estás haciendo es tan especial que nadie podría clonarlo sin mirar tu fuente, o incluso que haría su trabajo mucho más fácil sin una cantidad accionable (y fácilmente detectable) de cortar y pegar.