Estaba comprobando si es posible distribuir un node.js
aplicación de código cerrado. No son los archivos Javascript del lado del cliente sino los archivos del lado del servidor como un producto comercial. Supongo que la ofuscación/uglificación del código no proporcionará una privacidad real. Tal vez algo como empaquetar/compilar el código fuente en binario podría ayudar. es posible?node.js código de protección
Respuesta
Hice algo de búsqueda alrededor del código NodeJS y v8.
Primera de repositorio NodeJS He encontrado que el código fuente se carga por primera vez que se ejecuta en src/node.cc, línea 1128:
Local<Value> ExecuteString(Handle<String> source, Handle<Value> filename)
que primero se compila la cadena, (y más tarde se ejecuta), usando:
Local<v8::Script> script = v8::Script::Compile(source, filename);
Echando un vistazo al código fuente v8 en deps/V8/include/v8.h, línea 639, el compilador devuelve la función:
Compiled script object, bound to the context that was active
when this function was called. When run it will always use this
context.
No estoy seguro de lo que implica la secuencia de comandos vinculada al contexto, pero podría argumentar que no es solo un objeto binario que puede guardar y transferir a otra máquina sin tener que transferir todo el contexto.
EDITAR: Si examinamos más detalladamente v8.h, también hay una clase ScriptData, que compila previamente una secuencia de comandos para agilizar la compilación, y que se puede usar con la clase Script, pero la clase Script todavía requiere la fuente original cuando carga el script (Tal vez para cuando se imprimen errores, se sabe dónde está el origen del error.)
En resumen, no creo que sea posible sin mucho trabajo.
Hay un buen método que puedes probar: recompila el código fuente de NodeJS.
Abrir la carpeta src nodejs (nodejs-v0.xxx/lib/module.js), se encuentra este:
// Native extension for .js
Module._extensions['.js'] = function(module, filename) {
var content = NativeModule.require('fs').readFileSync(filename, 'utf8');
module._compile(stripBOM(content), filename);
};
Añadir nueva extensión a la habitación sus necesidades. Por ejemplo:
// Native extension for .jse (encrypted js)
Module._extensions['.jse'] = function (module, filename) {
var content = stripBOM(NativeModule.require('fs').readFileSync(filename, 'utf8')).split('').reverse().join('');
module._compile(content, filename);
};
vuelva a compilar nodejs, y cifrar su código y cambiar el nombre de su código de extensión del archivo de xxx.js a xxx.jse.
Se sabe que V8 compila JavaScript internamente y lo ejecuta. EncloseJS usa esta característica para hacer un ejecutable compilado del proyecto node.js. EncloseJS es un compilador para node/io.js - le da la misma privacidad que el compilador clásico.
Es posible que desee agregar un descargo de responsabilidad a su respuesta, ya que usted es el autor de EncloseJS. Sin embargo, una solución interesante. – svimre
- 1. Node.js protección del código del lado del servidor
- 2. Protección de SSJS contra código no verificado
- 3. ¿El código Silverlight necesita protección?
- 4. Código de seguridad/protección en JavaScript
- 5. Protección de código fuente en Microsoft
- 6. Protección del código de sus propios desarrolladores
- 7. Experiencia con la protección del código PHP
- 8. .htaccess o código de protección PHP contra varias solicitudes rápidas
- 9. ¿Cómo funciona la protección mediante contraseña del código Excel VBA?
- 10. Protección JKS
- 11. Protección de servicios web
- 12. asp.net protección de medios
- 13. Pregunta de protección CSRF
- 14. Protección de SignalR Calls
- 15. ¿Cómo funcionaría el código MVC en Node.js?
- 16. Trampas de protección contra copia
- 17. Protección de software mediante cifrado
- 18. Protección de un servicio web
- 19. PHP - Protección de descargas digitales
- 20. Protección de carpetas en MVC
- 21. protección de adobe air apps
- 22. Protección de hilo atascado WebLogic
- 23. Protección contra la automatización
- 24. Protección GWT y XSRF
- 25. flujo de trabajo de programación Node.js - Pruebas, Código, Pruebas
- 26. Node.js/Express Sitios web de ejemplo de código abierto
- 27. SQL Injection Protección - comillas simples
- 28. ¿Cómo manejar las excepciones de código en node.js?
- 29. Protección de ensamblados de sitios web con el nuevo modelo de seguridad de código
- 30. Protección de las fuentes del juego HTML5
node.js está acoplado a v8. Esto significa que necesita usar v8 para interpretar su código fuente en tiempo de ejecución. No creo que sea posible hacer una fuente cerrada. – Raynos
Raynos tiene razón, y además de eso ralentizaría la aplicación, debido a la sobrecarga de compilación. – alessioalex
Sí, mira [aquí] (http://stackoverflow.com/a/12640211/304141) para una forma de precompilar tu código. –