2012-01-09 5 views
1

私はテキストエリアにコードを入れて教育の目的で実行する可能性をユーザに提供したいと仮定します。例えば、ユーザのユーザがウェブサイトを安全にrubyスクリプトを実行

彼がフォームを送信print "hello"

で入力を埋める - >コードがサーバーによって処理される - >ユーザーが

を引き起こす見ているが、私はのようなものを回避したい:

  • 操作をファイルシステム
  • フォークのようなDOS攻撃
  • ウェブでのリクエスト
  • ...

このルビインタープリタは、いくつかの基本的な機能に制限されるべきです。

は可能ですか?

+0

リンクされた質問/回答に記載されているように、Rubyでこれを行う方法は、そのオブジェクトのコンテキストで安全なメソッドと実行中のユーザーコマンドのみを持つオブジェクトを作成することです。 – coreyward

+0

はい、あなたはそれがdupになるでしょう、ありがとう。最後の質問 – dfens

+0

ああ、正確には - あなたは電話することができます:スリープ(10) – dfens

答えて

-1

私はインタプリタの限界について知りませんが、それを提出する前にパース入力が必要で、system("rm -rf ~")のようなものがあれば、それを通訳者に送信し、警告でリダイレクトしないでください。

0

私はあなたがJRuby(http://jruby.org/)の実装を使用できると思います。 JVMセキュリティポリシー機能を使用してサンドボックスを作成できます。このような場合、ユーザの入力を心配する必要はありません.JRubyによって実行されているスクリプトは、セキュリティ設定によって制限されます。

関連する問題