ユーザーが Sinatra アプリをアップロードし、Rails 内でミドルウェアとして実行できるようにすることはできますか?

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

質問

ユーザーが小さなカスタム アプリ (Wordpress のテーマやプラグインを考えてください) を作成して、サイトにアップロード/実行できるようにしたいと考えています。

ユーザーに大きな柔軟性を与えるため、これには Sinatra アプリを使用し、Rails アプリ内でミドルウェアとして実行することを考えています。

しかし、これがセキュリティに与える影響はわかりません。シンプルな Sinatra アプリをミドルウェアとして作成しようとしましたが、すべての Rails モデルとすべてにアクセスできます。つまり、これはダメです。Sinatra アプリが効果的にサンドボックス化され、悪いことができないように (API またはアプリが通信するように設定した特定の方法の外で) ラックでこれらを分離する方法はありますか?

これを達成するための、私が思いつかなかった簡単な方法があるかもしれませんので、アイデアは大歓迎です。ありがとう!

役に立ちましたか?

解決

たぶん見てみると トライルビー / 気まぐれなサンドボックス または他のいずれか Rubyサンドボックス あなたをどこかに連れて行ってくれるかもしれません。

他のヒント

ユーザーのことをどの程度知っていますか?信頼していますか?回答には「非常に」や「親密に」などの言葉が含まれることを願っています。彼らが失敗した場合、あなたはどれだけ簡単に鋭くて痛いものを彼らに届けることができますか?

このようなもののアップロードとインストールを許可する簡単な方法は思いつきません (複雑な方法は思いつきません)。Wordpress であっても、WP がホストするサイトにランダムなプラグインをインストールしたり実行したりすることは許可されていないと思います。たとえ善意のコードであっても問題が発生するリスクは、偏執的な私の心には計り知れないように思えます。

シナトラは確かに柔軟性をもたらしますが、すでにお気づきのように、それは良いことではないかもしれません。

もちろん、ユーザーが Ruby/Sinatra に精通している (または十分に理解できる) 場合は、アプリのリポジトリ (git、svn など) を提供し、Rack 内の適切な場所にデプロイすることもできます。 このために または何らかのスケジュールで。

実現可能性についてまったく考えずに思いつきで考えた場合、安全に利用できる機能が比較的限られている場合は、それらを利用できるようにある種の制約付き DSL を作成することを検討するかもしれません。このようにして生成されたスクリプトが十分に短く効率的であれば、アプリのデータベース内に保存して、次の方法で実行できる可能性があります。 eval?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top