2011-12-30 17 views
12

Tengo scripts de JavaScript en mi aplicación que contienen funciones de JavaScript y jQuery. Toda la interacción del usuario con mi aplicación es dinámica y está pasando a la aplicación a través de jQuery.¿Cómo puedo ofuscar o hacer ilegibles mis archivos de JavaScript?

Lo que me di cuenta es que, cuando ejecuto mi aplicación, en el lado del cliente, el cliente puede ver mi código fuente al ver el origen de la página (Ctrl + U).

¿Cómo puedo ocultar o hacer algo para que el usuario no pueda entender o leer la fuente?

Quiero hacer algo como lo que hace Facebook. Al ver el usuario fuente de Facebook no puede reutilizar su código fuente ni siquiera comprenderlo.

Busqué en Google y encontré que este proceso se llama ofuscación, pero esto no funciona para mí.

yo probamos este:

http://www.javascriptobfuscator.com/default.aspx

y

http://dean.edwards.name/packer/

y

http://www.daftlogic.com/projects-online-javascript-obfuscator.htm

Incluso intenté http://www.jasob.com/

Pero no sirve para nada.

+0

** Usted puede ** ver todos los códigos de cliente para Facebook y Google. Está ofuscado, lo que significa que es * más difícil * leerlo, pero no imposible. Pero lo más importante, no explicaste lo que querías decir con * "no sirve para mí" *. ¿Cuál es el problema real que enfrenta con estos ofuscadores? – Groo

+0

En realidad, creo que se ha minimizado. Si bien eso es una ofuscación también, no es el objetivo principal. – ThiefMaster

+0

@Groo: significa que probé el archivo offiscator my js, pero no se pudo probar mi aplicación. no va a realizar ninguna operación en el evento click. ¿Puede sugerirme qué herramienta de ofuscador utilizo para ofuscar mi js? – Bhargav

Respuesta

23

Si a alguien le importa realmente tu código, se llevará la carga de trabajo de la eliminación de miniaturas (reemplazando al azar con nombres útiles de variable/función). Cualquier otra cosa como "encriptar" o empaquetar es solo snake oil ya que se puede revertir extremadamente fácil. Así que ahórrese un poco de trabajo y mejor gástalo para mejorar su aplicación.

Entonces: Lo único que debe hacer en un sistema de producción es minificar su código JS. Esto lo hace más pequeño y, por lo tanto, más rápido de cargar, por lo que es una ventaja real. Además de eso, será menos legible para las personas que solo tienen curiosidad por un vistazo rápido, pero no quieren gastar tiempo en ello.

Por ejemplo, los archivos JS de Facebook se han minimizado, lo más probable es que solo por razones de ancho de banda/rendimiento.


La forma más fácil de minify su JavaScript está utilizando el servicio web de Google para ello: http://closure-compiler.appspot.com/home
en cuenta que tiene un límite de 1 MB por lo que si el JS es que enorme, puede que tenga que descargar el Minifier basada en Java para ejecutarlo localmente

+0

sí, tienes razón. ¿Puede por favor sugerirme alguna herramienta para minificar el código JS? – Bhargav

+0

Agregué un enlace a mi respuesta – ThiefMaster

+0

No pude encontrar el minificador basado en Java. ¿Hay algún enlace? –

2

Todo lo que ThiefMaster dice es verdad. También vale la pena señalar que sus aplicaciones deben diseñarse con la suposición de que los usuarios pueden ver y manipular todo en el cliente. Si le preocupa la ofuscación porque cree que impedirá a los usuarios ver datos confidenciales o manipular información como los precios, entonces deberá rediseñar la aplicación para que la lógica segura resida en el servidor.

+0

sí, eres cierto. Solo quería que mi js fuera difícil de leer en el primer momento. Implementé mi lógica solo en el servidor. Acabo de transferir datos de usuario a controlador de servidor por jquery. Solo quería que el usuario ni siquiera sepa qué está pasando atrás. Ese es mi propósito usar el ofuscador. – Bhargav

+0

Incluso si completa la fuente ofuscada de manera irreversible (no es posible), los clientes modernos aún le permiten al usuario controlar el tráfico de red de su cliente. :/¿Qué funcionalidad específica le preocupa ocultar? – RSG

+0

iré por ofuscar mi archivo js. cualquier referencia bienvenida. Gracias... – Bhargav

0

Como necesito minificar mi código fuente de JavaScript, estoy buscando un programa de javascript que minimice cualquier código de javascript.

¿Por qué un minificador de JavaScript? Porque, estoy escribiendo un código aleatorio de javascript desde el servidor web hasta el cliente.

Debo usar "node.js" en el servidor web para ejecutar un programa de JavaScript que genera un código de JavaScript y lo minimiza sobre la marcha y lo envía al cliente.

Este programa de javascript es un: programa de cifrado y descifrado. El resultado del código de JavaScript para el cliente debe contener una función de JavaScript que descifre cada porción de una versión json o hexadecimal de una información encriptada. La función ejecuta algunos más, menos y multiplicaciones de enteros. A veces, puedo generar una condición (si, entonces y más) para calcular dos operaciones diferentes. Esta función se utiliza para descifrar dos o más entradas de parámetros.

Esa es la función aleatorizada: cada vez que el cliente solicita algunos datos privados, el servidor web genera dos funciones de JavaScript diferentes: una para el cifrado y otra para el descifrado. La función de descifrado se envía al cliente. La función de cifrado es utilizada por el servidor web para encriptar y enviar datos privados al cliente. Tiene sentido para la ofuscación: cada vez que se ejecuta el proceso, cada vez que la función de envío es totalmente diferente.

Y, para convencer que el cifrado/descifrado es muy seguro, agrego para el cliente, una conversión tabular de valores de dos o más parámetros; pero, los valores tabulares son generados, de hecho, por una función escrita solo para el servidor web y contiene algunas constantes numéricas, que NUNCA se envían al cliente. Por lo tanto, cualquiera que desee descifrar debe tener el valor de las constantes.

estoy explicó que el proceso porque:

  1. que se toman algunas cosas acerca de ofuscación en javascript código fuente; pero, la ofuscación en javascript aún no está implementada por el servidor web y los navegadores ... tal vez, podría suceder ... pero, ¿qué tipo de soluciones es útil con la ayuda de "SSL-ize" toda la transmisión a través de Internet.

  2. Es posible encriptar y desencriptar con funciones de cifrado/descifrado que pueden leerse. Y, sin el costo de los certificados SSL. Incluso, "un hombre en el medio" descifraría los datos encriptados; para eso, solo tiene que ejecutar la función javascript. Ok ... pero imagine que la función de descifrado de javascript también está cifrada ... entonces, el "hombre en el medio" tiene que ejecutar la función de descifrado y luego descifrar de nuevo el contenido descifrado que es la función de JavaScript para descifrar los datos cifrados.

Y, imagina si el servidor web hace una pregunta al cliente y la única respuesta es manejado por el cómputo consecuencia del cliente (cuyo no se envía a través de Internet) ... es imposible "el hombre en el medio "tener la respuesta.

Mira mi idea; estoy esperando los comentarios de cualquiera.

Cuestiones relacionadas