2010-03-23 16 views
2

Dans l'application "Mes rails", je souhaite que les utilisateurs soumettent des "thèmes" personnalisés pour afficher des données de différentes manières.Comment autoriser les utilisateurs à soumettre des thèmes/plugins personnalisés pour une application Rails

Je pense qu'ils peuvent obtenir les données dans la vue en utilisant des appels d'API et je peux créer un mécanisme d'authentification pour cela. Aussi une API authentifiée pour sauvegarder les données. Donc, c'est probablement sûr.

Mais je suis aux prises avec le meilleur moyen de permettre aux utilisateurs de télécharger/soumettre leur propre code pour le thème. Je veux que cela fonctionne comme des thèmes Wordpress/plugins où les gens peuvent télécharger la chose. Mais il y a des risques de sécurité. Par exemple, si je prends le "thème" envoyé par un utilisateur et le place dans son propre répertoire quelque part dans l'application rails, quels sont les risques? Si l'utilisateur insère un code exécutable de rails dans son thème, même si c'est la vue, ils ont un accès complet à tous les modèles, à toutes les données, etc., même d'autres utilisateurs. Donc ce n'est pas bon.

J'ai besoin d'un moyen de laisser les thèmes téléchargés exister dans une application sandbox des rails, mais je n'ai pas vu un bon moyen de le faire. Des idées?

Répondre

2

Vous pouvez essayer liquide (http://www.liquidmarkup.org/), qui a été développé pour permettre aux utilisateurs de créer leurs propres thèmes pour Shopify. Les thèmes liquides ne sont pas du vrai code Ruby, donc vous ne devriez pas avoir à vous soucier des utilisateurs qui essaient d'accéder à des choses qu'ils ne devraient pas.

Une autre option est le concept d'objets «corrompus» de Ruby, qui pourrait être utilisé pour implémenter des thèmes/plugins sécurisés tout en permettant aux utilisateurs d'écrire du code Ruby réel. Vous pouvez en savoir plus à ce sujet here. Je ne peux pas garantir à quel point il est sécurisé que je ne l'ai jamais utilisé.

+0

Le liquide a l'air IMPRESSIONNANT, merci! –

0

Je pense également à laisser les utilisateurs soumettre leurs propres applications sinatra et ensuite les exécuter à partir de rails. Cela ressemble à un routage en rack, c'est possible. Je n'ai pas été en mesure de trouver des données sur comment/si l'application sinatra est sandbox de l'application rails cependant. Si quelqu'un a des informations s'il vous plaît faites le moi savoir!