Se puede dejar a los usuarios cargar aplicaciones Sinatra y ejecutarlos dentro de los carriles como middleware?

StackOverflow https://stackoverflow.com/questions/2513877

Pregunta

Quiero que los usuarios puedan escribir pequeñas aplicaciones personalizadas (piense en temas o plugins en Wordpress) y carga / ejecutarlos en mi sitio.

Estoy pensando en usar Sinatra aplicaciones para esto, ya que daría a los usuarios una gran flexibilidad, y luego ejecutarlos como middleware dentro de mi carriles de aplicación.

Pero no puedo averiguar las implicaciones de seguridad de este. He intentado crear una aplicación sencilla Sinatra como middleware, y tiene acceso a todos los modelos y todo lo que los carriles - por lo que es malo. ¿Hay una manera de rejilla para evitar que estas tan separado que las aplicaciones Sinatra se sandboxed con eficacia y no puede hacer nada malo (fuera de una API o alguna configuración que forma específica para que puedan comunicarse)?

Puede haber una manera más fácil de lograr esto que no he pensado demasiado, por lo que la bienvenida a las ideas. Gracias!

¿Fue útil?

Solución

Tal vez un vistazo a TryRuby / el Freaky sandbox o uno de los otros cajas de arena de Ruby podrían llevarte a alguna parte.

Otros consejos

¿Qué tan bien sabe / confiar en sus usuarios? Espero que la respuesta contiene palabras tales como "extremadamente" y "íntimamente". La facilidad con que se podía llegar a ellos con algo agudo y doloroso si echan a perder?

No se puede pensar en una forma sencilla (de hecho, no puedo pensar en una complicada) para permitir la carga y la instalación de tales cosas. Incluso con Wordpress, no creo que permiten ningún plugin azar para instalar / ejecutar en el sitio WP-organizado -. Los riesgos de incluso el código causando problemas sólo parecen inmensa a mi mente paranoica bien intencionado

Sinatra, sin duda, dan flexibilidad, pero que puede no ser una buena cosa, ya que ya ha identificado.

Por supuesto, si los usuarios son Rubí / Sinatra leer y escribir (o capaz de convertirse en aceptablemente así), entonces usted podría darles un repositorio (Git, SVN o lo que sea) para sus aplicaciones y desplegarlos en el lugar apropiado en rack o bien < em> ad hoc o en algún horario.

Pensamiento en pie, y sin ninguna noción de viabilidad, si las funciones que con seguridad pueden estar disponibles son relativamente limitados, podría considerar mirando en la escritura de algún tipo de DSL restringida para que utilicen. Si los scripts así producidos eran cortas / lo suficientemente eficiente, tal vez podrían ser almacenados dentro de la base de datos de la aplicación y se ejecutan a través de eval?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top