Pregunta

Estoy trabajando en la construcción de una herramienta de desarrollo que está escrito en JavaScript.

Esto no va a ser un proyecto de código abierto y será vendida (esperemos) como un producto comercial.

Estoy buscando la mejor manera de proteger mi inversión.Es el uso de un obfuscator (código mangler) lo suficiente como para razonablemente seguro de que el código?

Hay otras alternativas que no soy consciente de?

(No estoy seguro de si obfuscator es la palabra correcta, es una de las apps que lleva su código y lo hace muy ilegible.)

¿Fue útil?

Solución

Voy a contarte un secreto.Una vez que usted entiende esto, usted se sentirá mucho mejor sobre el hecho de que Javascript ofuscación sólo es realmente útil para el ahorro de ancho de banda cuando el envío de secuencias de comandos a través del cable.

Su código fuente no es que valga la pena robar.

Sé que esto viene como una sorpresa para el ego, pero puedo decir esto con seguridad sin haber visto nunca una línea de código que has escrito, porque fuera de los pocos reinos de desarrollo donde la magia sucede, es cierto que de todos los de código fuente.

Digo, mañana, alguien dejó una pila de DVDs en la puerta de su casa con el código fuente de Windows Vista.Qué serían capaces de hacer con ella?Claro, usted podría compilar y regalar copias, pero eso es sólo un paso más esfuerzo que la copia de la versión comercial.Usted podría minuciosamente encontrar y eliminar la licencia de código de comprobación, pero eso es algo que algunos brillantes niño ya ha hecho a los binarios.Reemplazar el logotipo y gráficos, fingir que se escribió a sí mismo y de mercado como "Vicrosoft Mista"?Te pillan.

Usted podría gastar una enorme cantidad de tiempo a la lectura de el código, tratando de entender y verdaderamente "el robo de la propiedad intelectual" que Microsoft invirtió en el desarrollo del producto.Pero estaría decepcionado.Usted encontrará que el código era una larga serie de mundano decisiones, hizo una después de la otra.Algunos podrían ser más inteligente de lo que usted podría pensar.Algunos los dejan sacudiendo su cabeza preguntándose qué clase de monos están contratando a más de allí.La mayoría de los haría que te encoges de hombros y decir: "sí, esa es la manera de hacer eso."

En el proceso usted va a aprender mucho acerca de la escritura de los sistemas operativos, pero que no va a hacer daño de Microsoft.

Reemplazar "Vista" con "Leopard" y de los párrafos anteriores no cambian un poco.No es de Microsoft, es software.La mitad de la gente en este sitio, probablemente podría desarrollar un Desbordamiento de Pila clon, con o sin mirar el código fuente de este sitio.Ellos no.El código fuente de Firefox y WebKit están ahí fuera para que nadie lee.Ahora, vaya a escribir su propio navegador desde cero.Nos vemos en un par de años.

El desarrollo de Software es una inversión de tiempo.Es absoluta arrogancia imaginar que lo que estás haciendo es tan especial que nadie podría clonar sin mirar su origen, o incluso que iba a hacer su trabajo mucho más fácil sin un procesable (y fácilmente detectables) cantidad de cortar y pegar.

Otros consejos

Estoy profundamente en desacuerdo con la mayoría de las respuestas anteriores.

Es cierto que cada software puede ser robado, a pesar de ofuscación, pero, al menos, se hace más difícil extraer y reutilizar piezas individuales de el software y que es el punto.

Tal vez es más barato y menos riesgoso el uso de una ofuscación que dejar el código abierto y la lucha en la corte después de que alguien se robó las mejores partes de nuestro software y peligroso de la concurrencia.

Unobfuscated código susurra:

  • Venga, analizar mí, la reutilización de mí.Tal vez usted podría hacer un mejor software que utiliza mí.

Ofuscado código dice:

  • Desaparece amigo.Es más barato utilizar sus propias ideas de lo que tratando de hacerme.

Usted va a estar luchando una batalla perdida, si intenta ofuscar su código en la esperanza de que alguien no es robar.Usted puede dejar el casual navegador de llegar a ella, pero alguien dedicado casi seguro que sería capaz de superar cualquier medida que usted usa.

En el pasado he visto a la gente hacer varias cosas:

  1. Pegar un montón de espacio en blanco en la parte superior de la página con un mensaje de decirle a la gente que el código no está disponible, cuando en realidad sólo necesita desplazarse hacia abajo un par de páginas para llegar al mismo.
  2. Se ejecuta a través de un codificador de algún tipo, esto es tan, tan útil, ya que sólo se pueden ejecutar a través del descodificador.
  3. Otro método es reducir los nombres de variable a uno de los personajes y quitar espacios en blanco (esto es también una eficiencia cosa).

Hay muchos otros métodos.

Al final, sus esfuerzos son sólo probabilidades de detener el casual navegador de ver tus cosas.Si alguien dedicado viene a continuación, no hay mucho que usted será capaz de hacer.Usted tendrá que vivir con esto.

Mi consejo sería hacer realmente un producto impresionante que atrae a la mayoría de la gente y el ritmo de descuento en cualquier competencia por tener el mejor producto/servicio/comunidad y no el más ofuscado código.

Estás siempre se enfrentan con el hecho de que cualquier usuario que llega a tu página web va a descargar alguna versión de trabajo de su fuente de Javascript.Ellos se tiene el código fuente.Ofuscación de los que puede hacer que sea muy difícil ser reutilizado por alguien con la intención de robar su trabajo duro.Sin embargo, en muchos casos, alguien incluso puede volver a usar el cifrado de la fuente!O en el peor de los casos se puede resolver a mano y, finalmente, de comprenderlo.

Un ejemplo de una situación como la suya podría ser Google Maps.La fuente de Javascript es claramente ofuscado.Sin embargo, para realmente privado/confidencial lógica que insertar los datos en el servidor y hacer que el servidor de proceso de la información mediante la XMLHttpRequests (AJAX).Con este diseño tiene las partes importantes en el lado del servidor, mucho más estrechamente controlada.

Eso es probablemente la mejor que se puede hacer.Acaba de ser conscientes de que nadie con la suficiente dedicación, probablemente de-ofuscar su programa.Sólo asegúrese de que está cómodo con que antes de embarcarse en su proyecto.Creo que el mayor problema con esto sería para controlar quién está usando en su sitio.Si alguien va a un sitio con su código, y le gusta lo que hace, no importa que ellos no entienden lo que hace el código, o no puede leer, cuando puede copie el código y usarlo en su propio sitio.

Un obfuscator no le ayudará en absoluto si alguien quiere averiguar el código.El código todavía existe en la máquina cliente, y se puede tomar una copia de la misma y estudiar en su tiempo libre.

Simplemente no hay manera de ocultar el código escrito en Javascript desde el código fuente tiene que ser entregado al navegador para su ejecución.

Si desea ocultar su código, usted tiene las siguientes opciones:

1) Usar un entorno donde el código compilado (no de origen) se descarga en el cliente, por ejemplo,Flash o Silverlight.Ni siquiera estoy seguro de que es a prueba de tontos, pero es sin duda mucho mejor que el Javascript.

2) Tienen un extremo en el lado del servidor que realiza el trabajo y un cliente ligero que apenas hace peticiones al servidor.

Yo diría que sí, es suficiente si usted también asegúrese de que usted comprimir el código así como también el uso de una herramienta como Decano Eduardo Packer o similar.Si usted piensa acerca de lo que es posible con herramientas como .NET Reflector en términos de ingeniería inversa de código compilado / IL en .NETA, te das cuenta de que no hay nada que usted puede hacer para proteger completamente su inversión.

Por otro lado, recuerda que la gente que la liberación de su código fuente también parecen hacer muy bien de todos modos - es su experiencia, lo que la gente quiere más de su propiedad intelectual.

código obfuscator es suficiente para algo que necesita una protección mínima, pero creo que definitivamente no lo suficiente como para proteger a usted.si usted es paciente, usted puede realmente de destrozar toda la cosa..y estoy seguro de que hay programas para hacerlo para usted.

Dicho esto, usted no puede detener a cualquier persona de la piratería de sus cosas, ya que eventualmente va a romper cualquier tipo de protección que usted cree de todos modos.y es especialmente fácil en secuencias de comandos de lenguaje donde el código no compila.

Si usted está usando algún otro idioma, tal vez de java o .NET, Usted puede tratar de hacer las cosas como "llamar a casa" para comprobar que un número de licencia coincide con una determinada url.Que funciona si tu aplicación es algún tipo de aplicación en línea que va a ser conectado en línea todo el tiempo.Pero tener acceso a la fuente, la gente puede fácilmente omitir esa parte.

En resumen, javascript es una mala opción para lo que usted está haciendo.
Un paso por encima de lo que están haciendo es tal vez el uso de un servicio web del servidor para obtener los datos.Deje que el webservice manejar la autenticación/proceso de verificación.Requiere un poco de trabajo para asegurarse de que es a prueba de balas, pero podría trabajo

Si esto es para un sitio web, que por su propia naturaleza pone a la visualización de su código de un menú de clic de distancia, es la que hay realmente ningún motivo para ocultar algo?Si alguien quiere robar tu código lo más probable es que pasar por el esfuerzo de hacer que incluso los más alterados código legible por humanos.Buscar en los sitios web comerciales, no ofuscar su código, y que nadie va y le roba el código de google apps.Si usted está realmente preocupado por el robo de códigos, yo diría por escrito en otro lenguaje compilado.(que, por supuesto, destruir toda la webapp cosa...) Incluso entonces, usted no es totalmente seguro, hay muchos de los compiladores de allí.

Así que en realidad, no hay manera de hacer lo que quiera en la cara de cualquier persona con la suficiente motivación.

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