2011-07-14 12 views
7

私たちは、Tropo(https://github.com/tropo/tropo-samples/tree/master/rubyを参照)と同様の要件を持つ製品に取り組んでいます。そこでは、渡されるいくつかの関数と変数にアクセスできるRubyスクリプトを記述することができます。ユーザーがグローバル呼び出しにアクセスしてすべてのユーザーを削除したり、プログラムを終了したりしないようにします。 evalでこれを達成する方法はありますか?Rubyでevalを実行する安全な方法はありますか?

+0

あなたはevalを無効にして、信頼できるコマンド – apneadiving

+0

のみを渡すべきです:http://stackoverflow.com/questions/406833/language-in-a -sandbox-in-rails – fyr

答えて

2

これは実装方法に大きく依存しますが、evalとのバインディングの使用方法を調べます。独自のバインディングを作成して「安全な」オブジェクトで事前ロードすることで、ユーザーが自分のコードでできることを制限することができます。

http://rdoc.info/stdlib/core/1.9.2/Binding

0

$ SAFEパラメータを設定しますか?とにかく信頼できない文字列を評価しないようにする必要があります。

0

Rubyは「汚染された」オブジェクトに基づいてセキュリティモデルを提供します。

check thatが必要な場合があります。とにかく、DSLの作成はより安全です(より楽しい!)