質問

Python での「サンドボックス」環境の実装は、以前は rexec モジュール (http://docs.python.org/library/rexec.html)。残念ながら、いくつかのセキュリティ上の脆弱性のため、非推奨/削除されました。代替手段はありますか?

私の目標は、Python コードで半信頼された Python スクリプトを実行できるようにすることです。完璧な世界では、事前定義されたセット以外の関数を呼び出すと例外が発生します。rexec の廃止について読んだ限りでは、これは不可能かもしれません。なので、もらえる範囲で我慢します。スクリプトを実行するための別のプロセスを生成できるので、非常に役立ちます。ただし、I/O またはプロセッサ/メモリ リソースを悪用する可能性は依然としてあります。

役に立ちましたか?

解決

あなたが考えるすべてのモジュールの混入を防止するために、独自の__import__提供したいかもしれません「虐待I / Oまたはプロセッサ/メモリリソースを。」

あなたは pypy を始めて、制限を使用して独自のインタプリタを作成することができますそして、リソースの使用上の制約ます。

他のヒント

cpython のセキュリティ上の理由による「サンドボックス化」は次のとおりです。 "会社ではそんなことしないでね、子供たち"-もの.

試す :

  • Java「サンドボックス」を使用したjython
  • pypy -> 回答を参照 S.Lott
  • たぶんironpythonには解決策があるでしょうか?

見る 警告:

警告

Python 2.3 では、さまざまな既知の、すぐに修正できないセキュリティ ホールのため、これらのモジュールは無効になっています。rexec モジュールと Bastion モジュールを使用する古いコードを読むのに役立つように、モジュールはまだここに文書化されています。

CPythonのセキュリティのための最善の策は、OSレベルでのサンドボックスのメカニズムを使用し、OSによって制約別のプロセスで信頼できないコードが実行されています。

これは<のhref = "https://stackoverflow.com/questions/525056/is-there-an-alternative-to-rexec-for-あたりとして、「JythonのJavaの持つ『サンドボックス』」を使用するのと同じですpython-サンドボックス/#答え-525472" > の上記の答えが、おそらく、もう少し困難を構成します。

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