¿Existe algún problema de seguridad en el uso de JavaScript del lado del servidor?

11

Nunca usé el lado del servidor JavaScript, en realidad ni siquiera sabía que sería útil o útil allí. Ahora que descubrí que es posible y que hay una comunidad bastante activa, me pregunto si hay algunos inconvenientes conocidos cuando se usan en el lado del servidor.

¿Hay algunas suposiciones que debería tener en cuenta en el modelo de sandbox? ¿Debería preocuparme por la la misma política de origen que suelen aplicar los navegadores o no?

    
pregunta smiley 07.09.2011 - 10:24
fuente

3 respuestas

10

JavaScript es un lenguaje como cualquier otro lenguaje, como C y Java. Puede ejecutar Java en su PC de escritorio y también en su servidor. Del mismo modo, puede ejecutar JavaScript muy bien en un servidor.

Node.js es una biblioteca de E / S asíncrona popular que utiliza el lenguaje JavaScript. Funciona extremadamente bien en un entorno de servidor como lo demuestra GitHub y Klout .

La misma política de origen solo es aplicable en los navegadores, es decir, en el lado del cliente. La caja de arena todavía está en el idioma en el sentido de que probablemente no llegará a un desbordamiento de búfer. No es el mismo recinto de seguridad que se implementa en los navegadores, es decir, no tiene acceso a sockets y no tiene acceso a archivos.

La conclusión es pensar en JavaScript como un lenguaje genérico.

El inconveniente desde el punto de vista de la programación es que el intérprete de JavaScript se ejecuta en un solo hilo. Podría haber habido mejoras en esta área. Desde el punto de vista de la seguridad, probablemente no haya problemas de los que preocuparse.

    
respondido por el Nam Nguyen 07.09.2011 - 11:14
fuente
2

Como señala @Nam, Javascript es "solo" un lenguaje de programación como cualquier otro. Tiene algunas deficiencias que pueden hacer que sea un poco delicado de usar en un entorno hostil, por ejemplo. sus "números" son realmente valores de punto flotante, por lo que comienza a perder un poco de precisión al sobrepasar el límite de 2 53 : la "programación segura" consiste principalmente en asegurarse de que el código reacciona adecuadamente al recibir cualquier dato de entrada (incluso datos de entrada no válidos) y esa falta de claridad en las características del idioma lo hace un poco más difícil. No hay nada que haga que Javascript sea inherentemente inadecuado para la programación del lado del servidor, pero probablemente no sea el lenguaje más fácil para construir un servidor robusto.

    
respondido por el Thomas Pornin 08.09.2011 - 08:58
fuente
2

He visto una aplicación SaaS costosa que permite a los usuarios cargar fragmentos de código Javascript que se ejecutarán en el lado del servidor cuando se activen los eventos. Esta es una característica muy beneficiosa para esta aplicación, pero obviamente, debido a que están ejecutando código no confiable cargado por los usuarios, estoy seguro de que desarrollaron un entorno de ejecución de JavaScript restringido especial.

Este es el mismo problema con el que se encuentra con cualquier lenguaje interpretado dinámico, como Python o Ruby. Las prácticas normales de seguridad de la aplicación deben usarse cuando puede escribir su propio código de confianza para ejecutarse en el servidor, pero si está ejecutando un código que no es de confianza de los usuarios, debe restringir el intérprete, por ejemplo, de ejecutar algo como la función eval() de Python que podría ser usado para escapar de esa caja de arena.

    
respondido por el Van Gale 08.09.2011 - 22:49
fuente

Lea otras preguntas en las etiquetas