2010-03-25 5 views
2

Я хочу, чтобы пользователи писали небольшие пользовательские приложения (думаю, темы или плагины на Wordpress) и загружать/запускать их на моем сайте.Можете ли вы позволить пользователям загружать приложения Sinatra и запускать их внутри Rails в качестве промежуточного программного обеспечения?

Я думаю об использовании приложений Sinatra для этого, поскольку это даст пользователям большую гибкость, а затем запустит их как промежуточное программное обеспечение внутри моего приложения rails.

Но я не могу понять последствия этого для безопасности. Я попытался создать простое приложение synatra в качестве промежуточного программного обеспечения, и он имеет доступ ко всем моделям рельсов и обо всем - так что это плохо. Есть ли способ для стойки держать их в отдельности, чтобы приложения синатра эффективно изолированы и не могут делать какие-либо плохие вещи (вне API или какой-то конкретный способ, которым я настраиваю их для общения)?

Может быть, есть более простой способ сделать это, о котором я тоже не думал, поэтому идеи приветствуются. Благодаря!

ответ

1

Возможно, вы можете взглянуть на TryRuby/The Freaky Sandbox или один из других Ruby sandboxes.

+0

Спасибо Jonas, это отличная информация. –

+0

На самом деле, после дальнейшего рассмотрения это, похоже, больше не поддерживается. На самом деле позор - Ruby, похоже, не имеет хороших вариантов песочницы сейчас, что я смог найти. –

+0

И $ SAFE = 4, похоже, не имеет большой репутации. http://ruby-doc.org/docs/ProgrammingRuby/html/taint.html http://blog.segment7.net/articles/2006/08/30/reducing-safe http: //coderrr.wordpress. ком/2009/02/21/смешно-рубинового мета-программирование-хак / –

1

Как хорошо вы доверяете своим пользователям? Надеюсь, что ответ содержит такие слова, как «чрезвычайно» и «интимно». Как легко вы могли бы связаться с ними с чем-то острым и болезненным, если они испортились?

Я не могу придумать простой способ (черт возьми, я не могу придумать сложный), чтобы разрешить загрузку и установку таких вещей. Даже с Wordpress я не думаю, что они позволяют устанавливать или запускать любой случайный плагин на сайте, размещенном на WP, - риски даже хорошего кода, вызывающего проблемы, кажутся огромными для моего параноидального разума.

Sinatra, безусловно, даст гибкость, но это может быть не хорошая вещь, как вы уже определили.

Конечно, если ваши пользователи являются грамотными Ruby/Sinatra (или могут стать приемлемыми), вы можете предоставить им репозиторий (git, svn или что-то еще) для своих приложений и развернуть их в соответствующее место в стойке либо ad hoc или по определенному графику.

Мышление на копыте и без каких-либо понятий осуществимости, если функции, которые можно безопасно сделать доступными, относительно ограничены, вы можете подумать о том, чтобы написать какую-то ограниченную DSL для их использования. Если созданные таким образом сценарии были короткими/эффективными, возможно, они могли быть сохранены в базе данных приложения и выполнены через eval?

+0

Как бы «eval» помог с последствиями безопасности? –

+0

@ Джонас: возможно, никакой помощи по безопасности вообще - я пытался придумать способ разрешить любой плагин без развертывания. Я предполагаю, что можно было обернуть вокруг скрипта какую-то среду песочницы перед тем, как «eval» это сделать. Я не сказал, что мне понравилась идея, но с очень надежным набором пользователей она может работать * ;-) –