Si può consentire agli utenti di caricare applicazioni Sinatra e correre dentro Rails come middleware?

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

Domanda

Voglio consentire agli utenti di scrivere piccole applicazioni personalizzate (si pensi temi o plugin su Wordpress) e di upload / eseguirli sul mio sito.

Sto pensando di usare le app Sinatra per questo dato che sarebbe dare agli utenti un sacco di flessibilità, per poi correre come middleware dentro la mia applicazione Rails.

Ma io non riesco a capire le implicazioni di sicurezza di questo. Ho cercato di creare una semplice applicazione Sinatra come middleware, e ha accesso a tutti i modelli di rotaie e tutto - in modo che è male. Esiste un modo per rack per tenere questi separato in modo che le applicazioni siano effettivamente Sinatra sandbox e non può fare alcun male (al di fuori di un'API o di qualche specifica messa a punto ho modo per loro di comunicare)?

Ci può essere un modo più semplice per ottenere questo risultato che non ho pensato troppo, così le idee di benvenuto. Grazie!

È stato utile?

Soluzione

Forse uno sguardo a TryRuby / il Freaky sandbox o uno degli altri Rubino sandbox potrà portarvi da qualche parte.

Altri suggerimenti

Come ben sapete / fidarti dei tuoi utenti? Spero che la risposta contiene parole come "estremamente" e "intimamente". Come facilmente si potrebbe raggiungerli con qualcosa di tagliente e doloroso se rovinare?

Non riesco a pensare ad un modo semplice (diamine, non riesco a pensare a un complicato) per consentire il caricamento e l'installazione di queste cose. Anche con Wordpress, non credo che permettono alcun plugin casuale da installare / eseguire sul sito WP-hosted -. I rischi di anche buone intenzioni codice causando problemi sembrano appena immenso alla mia mente paranoica

Sinatra sarebbe certamente dare flessibilità, ma che non può essere una buona cosa, come hai già identificato.

Naturalmente, se gli utenti sono Rubino / Sinatra alfabetizzati (o in grado di diventare accettabilmente così) allora si potrebbe dare loro un repository (git, svn o qualsiasi altra cosa) per le loro applicazioni e li distribuisce nel luogo appropriato in rack sia < em> ad hoc o su qualche programma.

Pensando sullo zoccolo, e senza alcuna nozione di fattibilità, se le funzioni che possono tranquillamente essere messi a disposizione sono relativamente limitati, si potrebbe considerare guardando a scrivere una sorta di DSL vincolata per loro di utilizzare. Se gli script così prodotti sono stati di breve / abbastanza efficiente, forse potrebbero essere memorizzati nel database dell'applicazione ed eseguiti tramite eval?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top