Pouvez-vous permettre aux utilisateurs de télécharger des applications Sinatra et courir à l'intérieur comme Rails middleware?

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

Question

Je veux permettre aux utilisateurs d'écrire de petites applications personnalisées (pensez thèmes ou plugins sur Wordpress) et télécharger / les exécuter sur mon site.

Je pense à l'aide des applications Sinatra pour cela car il donnerait aux utilisateurs une grande flexibilité, puis de les exécuter comme middleware dans mon application rails.

Mais je ne peux pas comprendre les implications de sécurité de ce. J'essayé de créer une application simple comme middleware sinatra, et il a accès à tous les modèles de rails et tout - donc ce qui est mauvais. Est-il un moyen pour rack pour garder ces séparés pour que les applications sont effectivement sinatra sandbox et ne peut faire de mauvaises choses (en dehors d'une API ou une configuration de I manière spécifique pour eux de communiquer)?

Il peut y avoir un moyen plus facile d'y arriver que je ne l'ai pas pensé aussi, si les idées sont les bienvenus. Merci!

Était-ce utile?

La solution

Peut-être un coup d'œil à TryRuby / le Freaky sandbox ou l'un de l'autre Ruby sandboxes pourrait vous prendre quelque part.

Autres conseils

Comment bien savez-vous / faire confiance à vos utilisateurs? J'espère que la réponse contient des mots tels que « extrêmement » et « intimement ». Comment pourriez-vous facilement les atteindre avec quelque chose de pointu et douloureux se préparent-ils mess?

Je ne peux pas penser à une façon simple (Zut, je ne peux pas penser à un complexe) pour permettre le téléchargement et l'installation de telles choses. Même avec Wordpress, je ne pense pas qu'ils permettent un plugin aléatoire à installer / exécuter sur le site hébergé WP--. Les risques de même bien intentionnés du code causant des problèmes semblent juste immense à mon esprit paranoïaque

Sinatra serait certainement donner la flexibilité, mais cela ne peut pas être une bonne chose, comme vous avez déjà identifié.

Bien sûr, si vos utilisateurs savent lire et écrire Ruby / Sinatra (ou en mesure de devenir acceptable si) vous pourriez leur donner un dépôt (git, svn ou autre) pour leurs applications et de les déployer dans l'endroit approprié dans rack soit < em> ad hoc ou sur un calendrier.

La réflexion sur le sabot, et sans aucune notion de faisabilité, si les fonctions qui peuvent être mises à disposition en toute sécurité sont relativement limitées, vous pouvez envisager de regarder écrire une sorte de DSL contrainte pour eux d'utiliser. Si les scripts ainsi produits ont été assez court / efficace, peut-être qu'ils pourraient être stockés dans la base de données de l'application et exécutées par eval?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top