5

Rails プロジェクトにプラグイン アーキテクチャを実装しています。プラグイン アーキテクチャには、プラグイン作成者が Ruby コードを記述してサーバー上で実行する機能が含まれています。プラグイン作成者が破壊的なコードを記述できないように、これを安全にしたいと考えています。

他のオプションも受け入れますが、私がしなければならないことは、スコープが限定された隔離された環境でプラグインの Ruby コードを実行することだと思います。therubyracer gemの精神で何かを考えていますが、JavaScript の代わりに Ruby を安全に実行したいと考えています。

これを行う良い方法がわかりません。eval限定対象で使おうと思っbindingsたのですが、複数ファイルにするのは難しいとeval思いますし、束縛を十分に限定できないと思います。たとえば、プラグインがdestroy_allモデルに対して何かを実行できるようにしたり、アプリ内の既存のコードにモンキー パッチを適用したりしたくありません。

私はこれにかなり困惑しています。誰にもアイデアはありますか?

4

1 に答える 1

1

ruby セーフ レベルに関する次のドキュメントを読むことをお勧めします。サービスは、不明なユーザーによって埋め込まれたスクリプトにレベル 4 を使用することがあります。

http://ruby-doc.org/docs/ProgrammingRuby/html/taint.html

于 2012-08-27T20:40:24.393 に答える