Cómo usar Jscrambler 4 para proteger la integridad de su aplicación

En los últimos años, como lenguaje independiente de la plataforma, JavaScript ha encontrado su camino hacia una amplia gama de usos, que van desde aplicaciones móviles a juegos basados ​​en HTML5 y servidores Node.js. Atrás quedaron los días en que solo usaba JavaScript para efectos especiales y validación de formularios.

Este desarrollo es bueno tanto para los desarrolladores como para los consumidores, que obtienen actualizaciones más rápidas de sus aplicaciones, independientemente de la plataforma en la que estén.. 

Pero también plantea interrogantes sobre la seguridad.. 

¿Cómo podemos asegurarnos de que nuestras aplicaciones se ejecuten según lo previsto? ¿Cómo hacemos cumplir nuestras licencias? ¿Y qué pasa con la piratería??

En este tutorial, veremos las amenazas más comunes a sus aplicaciones de JavaScript y cómo puede protegerse contra ellas. También veremos los pasos para hacer de Jscrambler 4.0 una parte de su flujo de trabajo de desarrollo para que sus aplicaciones de JavaScript sean más seguras..

Asegure la comunicación entre su cliente y el servidor

Como JavaScript se usa principalmente en línea, el lugar natural para comenzar es la conectividad entre la aplicación que se ejecuta en los dispositivos de sus usuarios y su servidor..

Primero, déjame sacar esto del camino: No importa cuán buena protección agregue en el lado del cliente, siempre debe comenzar asumiendo que el cliente puede verse comprometido.. Algunos van tan lejos como para decir que hay que tratar al cliente como malicioso.. 

Fundamentalmente, la razón de esto es que no importa qué tan bien proteja a su cliente, la comunicación HTTP entre el cliente de JavaScript y su servidor siempre se puede alterar, con la ayuda de herramientas de detección de solicitudes o incluso de clientes personalizados que utilizan su protocolos del servidor. 

Entonces, si su aplicación habla con un servidor, antes de agregar cualquier otra forma de seguridad del lado del cliente, comience asegurando su servidor tanto como sea posible, tal como lo haría al usar una interfaz HTML regular.

1. Valide tus datos

Puede pensar en proteger su servidor a través de dos conceptos: integridad de datos y confidencialidad de datos.. 

Integridad de los datos significa que los datos en su aplicación deben permanecer precisos y consistentes durante su ciclo de vida. Confidencialidad de los datos significa que los datos de sus usuarios deben permanecer seguros y los terceros nunca deben tener acceso a ellos.

Si bien debería realizar la validación de parámetros en el cliente JavaScript, eso no evitará que los piratas informáticos envíen datos mal formados o incluso maliciosos a su servidor. Después de todo, alguien que busca romper su servidor probablemente ni siquiera usará su interfaz de usuario!

Por lo tanto, cuando se trabaja con una aplicación de JavaScript, todas las validaciones regulares del servidor, desde escapar de los caracteres HTML hasta verificar que los atributos son del tipo correcto, aún se aplican.

A veces, los datos enviados están formateados correctamente pero no tienen sentido en el estado de la aplicación, por ejemplo, cuando un jugador envía una puntuación increíblemente alta. Puede proteger su servidor contra situaciones como estas utilizando controles de integridad y colocando la mayor cantidad de lógica de la aplicación en el servidor como sea posible.. 

2. Mantenga sus datos seguros

Otra parte de asegurar la comunicación cliente-servidor es asegurarse de que todos los datos específicos del usuario permanezcan confidenciales y accesibles solo por el usuario autorizado.. 

El primer paso es utilizar SSL en todas las comunicaciones entre su cliente de JavaScript y su servidor para evitar que otras personas en Internet espíen los datos que pasan entre los dos..  

A continuación, deberá validar que las solicitudes provengan del usuario correcto. Los detalles de cómo hacerlo mejor dependen de su aplicación. En aplicaciones basadas en web, los nonces son una técnica útil, mientras que en el contexto de un juego, la autenticación OAuth puede ser un enfoque más natural.

Solo tenga en cuenta que nunca debe almacenar información confidencial como contraseñas o claves API en su cliente. Es una buena idea pensar en su servidor como una API que puede ser utilizada por el cliente de JavaScript pero también por otros clientes en Internet..

No puedes revisar todo en el servidor

Si bien las comprobaciones mencionadas anteriormente se aplican a cada tipo de aplicación, cuando se agrega más complejidad al cliente, algunas verificaciones se vuelven difíciles de realizar..

En juegos multijugador, por ejemplo, ejecutar toda la lógica a través de su servidor funcionará bien siempre y cuando el juego sea simple y solo tenga un número limitado de jugadores. Pero a medida que la base de usuarios activos crezca, la carga en el servidor le hará considerar la posibilidad de trasladar parte del procesamiento al cliente. Lo mismo sucede si su lógica de juego es tan compleja que simularla en el servidor requeriría muchos recursos..

Ahí es donde los límites se vuelven borrosos.. 

Si bien la idea de no confiar nunca en el cliente suena bien, en la práctica tendrá que establecer un umbral, diciendo "esto es lo mucho que confío en mi cliente" y solo hacer comprobaciones de seguridad en el servidor. Si algunas de las acciones del jugador también afectan a otros jugadores, ahí es donde debe involucrar más al servidor, dejando los lugares donde el usuario solo puede dañar su propia experiencia para que el cliente la maneje.

¿Y qué hay de los muchos casos de uso de JavaScript en los que no tiene un servidor o donde colocar la lógica de la aplicación en el servidor no tiene sentido, como las aplicaciones móviles, los reproductores de transmisión HTML5 y las aplicaciones de mapas??

Finalmente, es bueno tener en cuenta que no importa qué tan bien proteja su servidor, su cliente JavaScript siempre está expuesto. Por lo tanto, a menos que le agregue algún tipo de protección, es muy fácil para un atacante (ataques de Exfiltración de Man-in-the-Browser o de datos, por ejemplo) acceder a datos confidenciales o modificar la experiencia del usuario..

Protege tu JavaScript

Como lenguaje dinámico, JavaScript puede modificarse en el navegador usando herramientas básicas como el depurador incorporado del navegador. Si sabe lo que está haciendo, puede reemplazar partes del código y cambiar el comportamiento de la aplicación sobre la marcha.

Como vimos anteriormente, debe asegurarse de que los datos no válidos nunca lleguen a la base de datos de su servidor. Pero algunos cambios son más restringidos que esto. Un complemento de malware podría agregar nuevos botones a su aplicación para atraer al usuario a un sitio externo. O el usuario podría piratear al cliente para ver más del juego sin jugarlo.

Los cambios como este no romperán toda la aplicación, pero cambiarán la forma en que el usuario la experimenta. En el caso de malware, esto también puede representar una seria amenaza para la privacidad del usuario..

Debido a que JavaScript es un lenguaje interpretado, esto es imposible de prevenir por completo. Un hacker dedicado siempre encontrará una manera de superar los obstáculos, al igual que un ladrón puede romper cualquier bloqueo. Sin embargo, podemos hacer que intervenir sea tan difícil que la mayoría de los usuarios usarán métodos adecuados (como mejorar su juego) en lugar de piratear la aplicación..

Aquí es donde Jscrambler puede ayudarte. 

1. Haz tu JavaScript difícil de hackear

Jscrambler es una plataforma de seguridad de JavaScript que apunta a asegurarse de que las aplicaciones de JavaScript se ejecuten de la forma en que fueron desarrolladas para ser.

Para probar Jscrambler, visite su página de inicio y regístrese para una prueba gratuita. Si encuentra que está a la altura de sus expectativas, más tarde puede elegir uno de sus planes pagados..

Al iniciar sesión, si hay algún texto diciendo "Una nueva versión de Jscrambler ya está disponible" en la parte superior de la página, significa que aún está viendo la versión anterior. Haga clic en Pruebalo ahora.

Jscrambler 4 organiza su trabajo en aplicaciones, cada una de las cuales puede constar de uno o más archivos JavaScript. A continuación, verá la pantalla para seleccionar la aplicación para trabajar. 

Si desea probar la funcionalidad utilizando una aplicación de JavaScript propia, haga clic en Crear aplicación

Por ahora, sin embargo, vamos a elegir Patio de recreo. En este modo, podrás probar todas las transformaciones en un script de ejemplo, mientras que las transformaciones que puedes aplicar a tu aplicación real están limitadas por tu nivel de suscripción.

A la izquierda, verá el Árbol de archivos, una lista de archivos en su aplicación, y una Añadir Botón para importar o crear nuevos archivos. En el patio de recreo, el botón Agregar está deshabilitado..

A la derecha, hay un menú para escoger Especificaciones de idioma y Modo de aplicación para su aplicación Jscrambler los utiliza para garantizar que el código transformado funcione en su entorno seleccionado, teniendo en cuenta sus limitaciones y posibilidades.

Ahora iremos con ES5 y un básico Aplicación de navegador web.

Haga clic en el nombre del archivo (clock.js) para empezar a trabajar en ello.

El contenido del archivo se mostrará en el centro de la pantalla: el código fuente a la izquierda y la versión transformada por Jscrambler a la derecha..

A continuación, seleccione la Transformaciones de código pestaña a la derecha para revelar una lista de transformaciones disponibles. Jscrambler le permite elegir las transformaciones que considere relevantes para su código. Incluso puede usar anotaciones en su código para cambiar la forma en que se transforma parte del código. Esto puede ser útil en bloques de código críticos para el rendimiento, por ejemplo, funciones de representación en juegos.

Para probar las transformaciones, selecciónelas una por una. Luego haga clic en Proteger aplicación en la parte inferior de la ventana para crear una nueva versión de su código transformado.

Junto al botón, verá un medidor que presenta los efectos de estos cambios en su código JavaScript.

En el medidor, verá tres iconos, que representan el costo, la capacidad de recuperación y la potencia (de izquierda a derecha en la captura de pantalla anterior) de las transformaciones que ha seleccionado para su aplicación..

Para comenzar, marque la casilla de verificación delante de Flujo de control, y luego haga clic en Proteger aplicación.

los Control de aplanamiento de flujo es una de las nuevas y poderosas transformaciones agregadas en Jscrambler 4. Aplana el flujo de control del script para que sea difícil para una persona que lee el código seguir la lógica de su aplicación. 

A continuación, continúe seleccionando algunas opciones de ofuscación más. A medida que agregue más, notará cómo su código se vuelve cada vez más difícil de leer y, por lo tanto, de editar sin romper su funcionalidad..

Además, al hacer clic en Proteger aplicación de nuevo, incluso sin cambiar la configuración, notará que el contenido del script protegido cambia cada vez. 

Las transformaciones de Jscrambler son polimórfico, Asegurándose de que las transformaciones produzcan una salida diferente cada vez. De esta manera, incluso si alguien pudiera hackear la versión actual, la próxima vez que ejecute su código a través de Jscrambler, esos cambios ya no funcionarán..

2. Haga que su aplicación se proteja

Hasta ahora, hemos hablado sobre maneras de asegurarnos de que su aplicación funcione como se esperaba al evitar que tanto el usuario como los de fuera modifiquen su código fuente. Pero esa no es la única amenaza para su aplicación de la que debe preocuparse.. 

A medida que JavaScript se ha vuelto popular en aplicaciones independientes y móviles, la piratería se ha convertido en un problema real también en este ámbito..

Estoy seguro de que todos hemos hecho clic "Ver fuente" para aprender cómo hacer un nuevo efecto o truco, y adaptar lo que hemos aprendido a nuestros sitios web. Eso no es de lo que estoy hablando aquí.. 

En su lugar, supongamos que creaste un juego móvil popular en HTML5 y JavaScript. Gracias a la portabilidad de JavaScript, puede usar el mismo código en Android, iOS y otras plataformas, y llegar a un público más amplio sin el trabajo adicional de escribir versiones nativas para cada entorno. Pero hay un problema: cualquiera puede copiar su código JavaScript, hacer algunas modificaciones y venderlo como propio.!

Las transformaciones en el paso anterior ayudan a evitar esto al hacer que el código sea difícil de leer y de ingeniería inversa. Además de ellos, Jscrambler agrega códigos de captura, funcionalidad que hace que el código se proteja a sí mismo.

Echemos un vistazo a algunos de ellos..

En Jscrambler, en la lista de transformaciones, encontrarás una sección titulada Bloqueos de Código.

Las transformaciones en esta sección agregan otra capa de seguridad a su aplicación de JavaScript. 

Usándolos, puede limitar la ejecución de su código a un conjunto dado de navegadores, un marco de tiempo (útil para demostraciones que no deberían ejecutarse después de que finalice el período de vista previa), en un dominio determinado (generalmente el suyo) y sistema operativo particular.

Una característica más poderosa para proteger su código es el lado del cliente RASPAR (Autoprotección de la aplicación en tiempo de ejecución). Modifica su código JavaScript, lo que lo hace defenderse de la manipulación del tiempo de ejecución. Por ejemplo, la aplicación dejará de funcionar si alguien intenta abrir el depurador.

Finalmente, en el Mejoramiento sección, seleccione Minificación Para minimizar el código y hacer el archivo más pequeño..

Luego, haga clic en Proteger aplicación, seguido por Descargar aplicación Para descargar el código fuente y utilizarlo en su aplicación..

Jscrambler realiza un seguimiento de su historial de transformación, por lo que siempre puede volver a una versión anterior.

3. Usa plantillas para hacer tu trabajo más fácil

Como hemos visto, configurar su nivel de protección seleccionando las casillas de verificación una por una es sencillo. Pero aún puede acelerar su flujo de trabajo agrupando sus combinaciones comunes de transformaciones en plantillas.

Una vez que haya encontrado un conjunto de transformaciones que le gustaría almacenar para uso futuro, haga clic en Crear plantilla en la parte inferior de la Configuraciones de la aplicación sección.

Jscrambler te pedirá que le des un nombre y una descripción a tu plantilla. 

Escriba algo descriptivo para el futuro, y haga clic en Guardar plantilla

También puede utilizar una de las plantillas ya disponibles en el Sus plantillas lengüeta:

Mueva el puntero del mouse sobre los nombres de las plantillas para leer más sobre ellos y comprender cuándo tienen sentido. Luego haga clic en ellos para ver qué transformaciones se aplican a su código..

4. Haz de Jscrambler una parte de tu flujo de trabajo de desarrollo

Hasta ahora, hemos cubierto algunas formas en las que Jscrambler puede ayudarlo a proteger su aplicación utilizando la interfaz de usuario web. Si bien la interfaz es intuitiva, a medida que su aplicación crezca, querrá algo más sencillo.

Además, como mencioné anteriormente, Jscrambler es polimórfico, generando una salida diferente cada vez. Por lo tanto, es útil ejecutar la herramienta de vez en cuando, incluso si no hay cambios en los archivos específicos.

Para hacer esto, veamos la herramienta de línea de comandos de Jscrambler..

Primero, descargue e instale la herramienta de línea de comandos usando npm. En su línea de comando, escriba:

sudo npm install -g jscrambler

Una vez que se complete la instalación, vuelva a sus aplicaciones en el administrador de Jscrambler. 

Tenga en cuenta que para usar la herramienta de línea de comandos, necesitará usar una aplicación real en lugar del script del patio de recreo. Entonces, si todavía no tienes una aplicación, crea una ahora.

Después de seleccionar las transformaciones que desea aplicar, haga clic en el botón de descarga en la esquina superior derecha de la página. Esto descargará su configuración a su computadora como un archivo JSON.

Copia el archivo JSON a tu proyecto. No lo comprometa con el control de versiones ya que el archivo contiene su clave API y su secreto para usar la API Jscrambler.

Entonces, ejecute el jscrambler Comando para ejecutar las transformaciones en tus archivos JavaScript.. 

Por ejemplo, si solo tienes un archivo, test.js, puedes ejecutar el siguiente comando:

$ jscrambler -c jscrambler.json -o test.protected.js test.js 

En el comando, usted pasó el archivo JSON que contiene la configuración de su aplicación usando el -do parámetro, seguido del archivo de salida (-o test.protected.js), y finalmente el archivo JavaScript para proteger..

Para ejecutar la protección de todos los archivos JavaScript en el directorio del proyecto, puede usar algo como esto:

$ jscrambler -c jscrambler.json -o protected / ** / *. js

En este ejemplo, en lugar de un archivo de salida, define un directorio (protegido) donde Jscrambler colocará los resultados de la protección.

Ahora, no tiene que volver a la interfaz de usuario web de Jscrambler cada vez que realice cambios en sus archivos JavaScript. Esto hará que sea más probable que recuerde el paso y, por lo tanto, mantenga su aplicación segura..

Como una mejora adicional, también podría configurar la tarea Jscrambler para que se ejecute siempre que haya cambios en sus scripts, por ejemplo, utilizando Grunt. O incluso podría ser una tarea en su servidor de integración continua, ejecutándose cada vez que se confirma una nueva versión del código.

Conclusión

Jscrambler proporciona herramientas de vanguardia para dificultar que los crackers, los tramposos y el malware inyecten una funcionalidad no deseada a su aplicación o cambien las variables de su aplicación. También hace que sea difícil para otros copiar su código y redistribuirlo como propio..

La seguridad es un campo complejo con múltiples amenazas diferentes a considerar. Por lo tanto, cuando su código JavaScript habla con un servidor, la mejor solución es utilizar una combinación de las mejores prácticas de desarrollo del servidor, la validación robusta de parámetros y una plataforma de seguridad JavaScript como Jscrambler para que el cliente sea a prueba de falsificaciones. De esta manera, puede evitar la mayoría de los ataques contra la integridad de su aplicación ya en el cliente y asegurarse de que sus clientes obtengan la experiencia que usted diseñó para tener..

Jscrambler también puede ayudarlo a derrotar los ataques y fraudes de Man-in-the-Browser (MitB), los robots, las amenazas de 0 días y las APT (amenazas persistentes avanzadas) al detectar los cambios realizados en el DOM y proporcionarle toda la información que necesita. Detengan estos ataques. Para obtener más información, póngase en contacto con [email protected].

Para obtener más información sobre Jscrambler, sus nuevas funciones y las últimas actualizaciones, también puede visitar el sitio web de Jscrambler.