¿Debería preocuparme por la 'piratería de Javascript'?

11

Si escribo una aplicación Javascript del lado del cliente (con un poco de interacción con el servidor), ¿cómo puedo evitar que las personas copien los archivos Javascript en su propio sitio? ¿Debería, en absoluto?

sjmulder
fuente

Respuestas:

34

¿Te debería importar? No.

¿Por qué? Porque no hay nada que realmente puedas hacer al respecto.

Algunos han sugerido de manera predecible la ofuscación. Esto funciona para Java y .Net, pero Python, Javascript y Perl son texto sin formato, por lo que hay muy poco que realmente pueda hacer. El valor en su sitio es, sin duda, el lado del servidor, así que no se preocupe por el Javascript.


fuente
1
Si puedo descubrir lo que necesito saber de Java desmontado (supuestamente) ofuscado, creo que puedo administrar Javascript y apenas soy un experto en tales "piratería" o ingeniería inversa. "La información anhela ser gratuita" (cita que escuché en alguna parte).
2
Javascript tiene una defensa innata: está vinculada al código del servidor, que es inaccesible. La ofuscación es un placebo. También hace que sea más difícil diagnosticar los informes de errores que recibe. Si alguien va a estafarte (y creo que estás exagerando el valor de tu código JS), no puedes hacer mucho
1
¿Y cuál fue el truco genial en cuestión?
2
Los votos negativos me hacen reír. Javascript se utiliza mejor como una utilidad para mejorar su sitio. El único código que vale la pena proteger es el código que expone información sobre el funcionamiento interno de su sitio y su empresa. ¡Ninguna de estas cosas pertenece al script del cliente para empezar!
1
@ Jim: no lo sé. Creo que el recuento es actualmente de 17 votos a favor, 8 votos a favor y debido a que estoy en el límite diario de rep. Mi representante de esta respuesta es ... -16.
14

Lo mejor que puede hacer es ofuscar el código para que otros tengan dificultades para modificarlo. Por supuesto, conserva una copia del original.

Como beneficio adicional, el código ofuscado debería ser más pequeño y, por lo tanto, más rápido de cargar.

Adaptador IA
fuente
Eso se llama minimización de Javascript, ¿no?
Jonathan Leffler
44
minificación en realidad
Matt Briggs
9

¿Porque te preocupas? Veo dos razones por las cuales podría ser: 1) Está escribiendo una biblioteca JavaScript comercial. Solución: obtenga otro plan de negocios, las librerías de JavaScript tienden a ser gratuitas. Quizás pueda ganar dinero en un pequeño nicho de empresas, pero lo más probable es que no usen código copiado ilegalmente de todos modos.

2) Te preocupa que tu competidor vaya a copiar tu sitio. Si lo hacen, puede estar seguro de que siempre estará un paso por delante de ellos. Lo más probable es que escriban su propio código y copien la apariencia y el comportamiento de su sitio y nada puede salvarlo de eso, excepto obtener patentes estúpidas de software, por ejemplo, compras con un solo clic de Amazon.

IOW, no te preocupes. Ponga un aviso de copyright pidiéndole a las personas que le digan si usan sus cosas. Si suficientes personas lo hacen, use el hecho de que ha creado una biblioteca útil para obtener crédito entre los geeks, lo que probablemente será beneficioso a largo plazo.

erikkallen
fuente
Es una aplicación web, no una biblioteca :). Gracias por el # 2.
6

No. No intente "proteger" un lenguaje de script del lado del cliente. La ofuscación no funciona. Minificar tiene sus usos (pero la lucha contra la piratería no es uno de ellos)

También recomendaría no minimizar su código a menos que obtenga miles de visitas por día, donde unos pocos kilobytes adicionales por solicitud serán una diferencia notable (y solo lo haga una vez que comprima todas las imágenes que está utilizando correctamente, lo que le ahorrará mucho más que unos pocos KB, configure el almacenamiento en caché correctamente, etc.)

Incluso si minimiza / ofusca el Javascript, la gente puede copiarlo trivialmente en su propio sitio. Será un poco más difícil de modificar, pero dependiendo de lo que haga el script, eso puede no importar. Por ejemplo, el Editor de ADM que la gente ha mencionado se suministra, para uso público, minimizado.

La ofuscación y la minificación pueden ser similares, pero si tuviera que ofuscar adecuadamente el código, básicamente tendría que reescribir grandes segmentos para que sea difícil de entender. Esto hace que el código sea más complicado y mucho más difícil de manejar (por usted), por lo que introducirá errores ... Si su Javascript se vuelve defectuoso, evitará la piratería, ya que nadie querrá usarlo (o robarlo) ... pero, err, eso no es bueno.

Una de las mejores cosas de Javascript es que cualquiera puede hacer clic con el botón derecho / ver la fuente y aprender Javascript mirando el código en vivo y en funcionamiento. Si le preocupa que la gente vea el código y lo copie, la web / Javascript no está ' t el lenguaje correcto ..

Recomendaría poner un comentario al comienzo de todos sus .jsarchivos y <script>bloques, con su información (nombre, sitio web) y una licencia de algún tipo. Dependiendo de cuál sea el código, quizás poniendo un aviso que diga "Si usa todo o parte de este código en un proyecto, ¡hágamelo saber!" puede ser mucho más efectivo que "¡No use este código para ningún otro propósito, nunca!"

dbr
fuente
4

Podría ofuscar (o al menos minimizar) el código para desalentar esto (aunque no es imparable para alguien que tenga el tiempo. Por ejemplo, la desofuscación del editor de ADM de StackOverflow (¡pero esto fue por una buena razón!)).

Realmente, cualquier código que ponga frontend será público y estará disponible para que todos lo vean / usen.

Ross
fuente
El editor de ADM no estaba ofuscado, solo estaba minimizado.
La reducción de JavaScript tiene el efecto secundario de ofuscarlo también ... var va = fa (); está tan bien como ofuscado.
Unkwntech
4

¿Por qué preocuparse por eso? Si vale la pena robar sus guiones, puede hacerlos de código abierto y obtener ayuda para perfeccionarlos.


fuente
Más allá de eso, también puede obtener crédito y buenas relaciones públicas para ellos. Si no puede hacer que estas cosas funcionen para usted en un sentido comercial convencional, vea cómo puede hacer que funcionen para usted de otras maneras.
Jon Hopkins
4

Realmente no se puede, ya que es un lenguaje interpretado que siempre se entrega en forma de código fuente. Incluso la ofuscación no va a ayudar mucho si el pirata está lo suficientemente motivado.

(Ejemplo de caso: El Editor de WMD de StackOverflow , que podría ser, estrictamente hablando, ser visto como Piratería, aunque sé que Jeff y Dana solo tenían buenas intenciones)

Michael Stum
fuente
4

No. No debes preocuparte en absoluto.

Si su negocio depende del secreto de su código JavaScript, hay un problema serio con él.

De lo contrario, no te molestes. Es posible que deba intentar minimizar su código JavaScript para que las páginas se carguen más rápido.

Niyaz
fuente
3

Uso GWT (Google Web Toolkit) para escribir aplicaciones web, en las que todo el código está escrito en Java y se puede depurar y probar con herramientas centradas en Java, pero se convierte en JavaScript para su lanzamiento.

Cuando no está en PRETTYo DETAILEDmodo, el código JavaScript generado por GWT es muy altamente optimizado y ofuscado, lo que es muy práctico para ingeniería inversa. (Un ofuscador tradicional de JavaScript proporcionará una parte de estos beneficios, pero no cuando las optimizaciones dependan de la capacidad de GWT para realizar poda de ramificación detallada y análisis de ruta de código).

Dicho esto, en general, estoy -1 en ofuscación; significa, por ejemplo, que los clientes legítimos son menos capaces de ayudarlo a resolver sus problemas, incluso cuando tienen habilidades de desarrollo y una copia de FireBug. Eres el autor original: conoces el código mejor que nadie, y eso te da una ventaja competitiva sobre alguien que está tratando de hacer una imitación barata; Además, si alguno de esos competidores realmente está ganando dinero real con algo que robaron sin permiso, eso los abre a tener ese dinero (o, potencialmente, triplicar la suma) quitado en una demanda; la competencia legítima y seria no irá por ese camino, y ¿por qué preocuparse por el otro tipo?

Charles Duffy
fuente
2

Utilizamos una gran cantidad de código Javascript (y mucho del lado del servidor) para nuestra aplicación web, y elegimos "ofuscar" que los Javascripts eliminen espacios en blanco, saltos de línea, etc. - esto realmente no protegerá su código, pero haga que sea muy difícil de leer y comprender, y lo más probable es que otros no se molesten debido al esfuerzo involucrado.

Sin embargo, la razón por la que hacemos esto no es tanto porque no queremos que nadie copie partes de nuestro código, sino más bien para desalentar a nuestros socios / clientes a quienes entregamos el código de realizar modificaciones directamente en "nuestros archivos" (para evitar problemas cuando se instala la próxima actualización) ...

Nota: la ofuscación tiene una desventaja que debe tener en cuenta: si alguna vez necesita depurar ese código de script, usted mismo no podrá trabajar con la información ofuscada, por lo que siempre implicará copiar el archivo 'legible' en el servidor primero.


fuente
2
No llamaría formatear Javascript en un editor o usar alguna forma de "impresora bonita" por mucho esfuerzo. Reducir esas cosas puede ser útil para reducir el ancho de banda (es decir, minificar), pero eso es todo.
Si el archivo Javascript es grande, es mucho esfuerzo. Además, las "impresoras bonitas" no funcionan bien (o no funcionan en absoluto) en el tipo de archivos "una sola línea contiene todo el código".
1

Asumiendo que cualquier javascript lo suficientemente bueno será recogido por otros, ¿qué tal simplemente nadar con la corriente y aprovecharla al máximo?

Coloque una licencia que permita su uso y, por ejemplo, requiera atribución. Tal vez con una cláusula no comercial como algunas variantes de Creative Commons también, si realmente debe hacerlo.

JosefAssad
fuente
1

La mayor parte de la lógica de su aplicación debe ser del lado del servidor. Javascript solo debe manejar cosas de GUI e interacciones simples con el servidor. Si su código Javascript contiene suficiente lógica de aplicación que le preocupa que alguien lo robe, entonces probablemente esté haciendo algo mal.

davogones
fuente
0

Si tiene secretos comerciales, puede mover las partes más sensibles del código a ActionScript (Flash). Es esencialmente el mismo lenguaje que JavaScript, y se almacena en forma tokenizada.


fuente
0

Si te preocupa que determinados hackers incondicionales roben tu código, lo siento, no hay nada que puedas hacer. Pero hay maneras de hacerlo inconveniente para los ladrones casuales. Una forma relativamente fácil de hacerlo es cargar algunas partes XMLHttpRequesty eval()usarlas; esto podría disfrazarse como (o incluirse en) algo que obtiene datos JSON y los usa para llenar la página.

usuario281377
fuente