javascript - principiantes - node js vs java español
node.js-Código de protección? (12)
Alguien intentó nexe o github.com/zeit/pkg ?
Estas parecen ser una buena opción. Una utilidad de línea de comandos que compila su aplicación Node.js en un solo archivo ejecutable.
Quiero usar node.js en mi próximo proyecto, pero a mi jefe no le gusta que nuestros competidores puedan leer el código fuente.
¿Hay alguna manera de proteger el código JavaScript?
Como acabo de completar un gran proyecto de Nodejs puro en más de 80 archivos, tuve el mismo problema que OP. Necesitaba al menos una protección mínima para mi arduo trabajo, pero parece que esta necesidad tan básica no había sido cubierta por la comunidad de NPMjs OS. Agregue sal a las lesiones: el sistema de encriptación de paquetes JXCore se rompió la semana pasada en pocas horas, así que volvamos a la ofuscación ...
Así que creé la solución completa, que maneja la fusión de archivos, la uglificación. Usted tiene la opción de excluir archivos / carpetas especificados, así como de la fusión. Estos archivos se copian a la nueva ubicación de salida del archivo combinado y las referencias a ellos se reescriben automáticamente.
Repositorio de Github del nodo uglifier
PD: Me alegraría si la gente contribuyera para hacerlo aún mejor. Esta es una guerra entre ladrones y programadores que trabajan duro como tú. ¡Unamos nuestras fuerzas, aumentemos el dolor de la ingeniería inversa!
El código javascript del lado del servidor está completamente cerrado. Nadie puede leerlo.
El código javascript del lado del cliente es completamente de código abierto. Todos pueden leerlo.
Para este último no puede hacer nada, pero lo mismo se aplica a RoR, ASP.NET, PHP, etc.
El código del servidor real está cerrado a menos que públicamente lo haga disponible.
Si está creando una biblioteca e intentando venderla como fuente de terceros, entonces está abierta y puede ser robada. Por supuesto que puede demandarlos por violación de derechos de autor.
Hay varias compañías grandes como extjs que venden bibliotecas que podrían ser robadas, por eso lo que realmente te venden es el código y un servicio de asistencia.
La mayoría de los proyectos comerciales basados en nodos son servicios.
Empaque su lógica central en módulos. Estos módulos pueden construirse y luego ejecutarse a través del cierre de Google . Incluso podrías hacer esto como una tarea Grunt como parte de tu proceso de compilación.
Es una vieja pregunta pero vale la pena señalarla. Nota: nada de lo que haga ocultará realmente su código, pero tampoco se enviará nada a través de .Net (C #) o Java. En general, simplemente usar una herramienta como uglify, o el cierre debería ser un punto de ofuscación suficiente. Al ser modular y usar el cierre, puedes hacer muchas optimizaciones que de otra manera serían difíciles.
No hay forma de que pueda estar absolutamente seguro de que nadie podrá leer su código. Podría usar ofuscación o minificación, lo que puede hacer que sea mucho más difícil descodificar su código. Un ejemplo de un ofuscador / minificador es el compilador de cierre de Google para JavaScript.
Para ser muy claros, el Javascript del lado del cliente (como se descarga desde un servidor remoto en un navegador web estándar) no puede protegerse de la visualización y / o modificación, sin importar cómo lo ofusque desde la reconstrucción ("de-ofuscación") de la fuente original Es técnicamente trivial. (La ofuscación de Javascript es simplemente otro ejemplo del nombre inapropiado de seguridad ampliamente utilizado "seguridad a través de la oscuridad").
Si desea utilizar Javascript y Node.js para proporcionar un "producto" protegido (que en este contexto es una aplicación o servicio que requiere la instalación en un servidor que su empresa no controla), tampoco puede asegurarla como la única opción disponible para Usted (ofuscación) no proporciona tal protección.
Debe tenerse en cuenta que incluso si su producto se proporciona como un ejecutable binario que no es una garantía, puede proteger la propiedad intelectual que contiene, ya que cualquier binario puede descomponerse en un formato comprensible. En este caso, disfrutamos de un cierto nivel de seguridad basado en los recursos excesivos (tiempo / experiencia) requeridos para convertir el código de máquina de bajo nivel (como lo proporciona la descompilación) en las construcciones lógicas de alto nivel utilizadas por los lenguajes de programación modernos. (Esto es de alguien que una vez descompiló CP / M en una comprensión de su diseño interno a mano.
Sin embargo, no todo está perdido: si asumimos que uno puede proteger la propiedad intelectual mediante programación (el jurado aún está deliberando sobre esto), hay una manera de proporcionar un producto basado en Node.js de forma segura, pero no es para técnicamente poco aventurero, ya que requeriría una refactorización sustancial del código fuente de Node.js (para agregar soporte para bibliotecas criptográficamente seguras y eliminar, o de otra manera proteger, la reflexión de objetos para sus bibliotecas propietarias).
Podrías lograr esto con una NativeExtension para nodo
Tendría un archivo boostrap.js
que agrega un controlador de extensión para archivos .jse
// register extension
require.extensions[".jse"] = function (m) {
m.exports = MyNativeExtension.decrypt(fs.readFileSync(m.filename));
};
require("YourCode.jse");
YourCode.jse
sería la versión encriptada de su código fuente (la clave para el descifrado no estaría en ningún lugar en texto sin formato porque el proceso de descifrado tiene lugar en la extensión nativa).
Ahora tiene su función de decrypt
NativeExtensions transformar la fuente de nuevo a javascript. Simplemente .jse
que su proceso de compilación cree versiones .jse
encriptadas de todos sus archivos y las publique a sus clientes. También necesitarían la extensión nativa, pero ahora ha hecho un poco más difícil modificar su código sin demasiado esfuerzo. Incluso puede hacer que la extensión nativa llame a casa y verifique la información de la licencia para ayudar a prevenir la piratería (tenga en cuenta que esto no detendrá la piratería, no hay una solución para eso).
Puede utilizar enclosejs.com - compilador para proyectos node.js. Realmente compila JavaScript a código nativo, y sus fuentes no están incluidas en binario.
Solo incluye un acuerdo de licencia y dales el código fuente. Es posible que quieran personalizarlo de todos modos.
Tengo una idea. Protege una aplicación cpp
o java
lugar de js.
- Envuelva su código en un formato de encriptación y compílelo como un recurso de archivo
utf-8
. - Use su aplicación
cpp
ojava
para cargar el archivo completo en unalinux pc
oarm computer
, asegúrese de tener una contraseña segura o cierre elssh port
o desactive el puerto de video y navegue por la PC con Linux. - Hay un programa cpp para descifrar el archivo en la PC de Linux.
- Desarrolla un servidor web para controlar tu linux pc.
Así que esto es muy parecido a una caja negra, los clientes no pueden hacer nada con su código.
puedes usar packer para nodejs para ofuscar tu script ...
JXcore (node.js 0.11.X distro) tiene su propia función de empaquetado JX que asegura el código fuente y los activos. Incluso puede seleccionar si ese paquete en particular se puede usar desde otras aplicaciones o no. (independiente o biblioteca)
Digamos que tiene muchos archivos JS, etc. y el punto de entrada a su módulo es algo así como;
exports.doThis = function() { ...... };
Si simplemente llama al método a continuación y lo compila en el paquete JX, el código fuente será seguro.
jxcore.utils.hideMethod(exports.doThis);
esto es (la ocultación del método) solo se requeriría para el archivo de entrada, ya que todos los demás archivos sub JS no son accesibles desde la aplicación de llamada.
Necesitas JXcore para ejecutar paquetes JX.
Más información está disponible en JXcore