7

私は、ユーザーが互いに戦うロボットを制御するための Python プログラムを作成できるゲームを作成しています。毎ターン (1000 ターンのゲームで) スクリプトがサーバー上で実行され、ロボットの次の動きが決定されます。これらのユーザーがサーバーに対して意地悪になるのを防ぐにはどうすればよいですか?

私は次のことを考え/研究しました:

  • eval制限された環境でコードを実行する(つまり、__builtins__無効にする)
  • chroot/のような OS 固有の jail を使用するptrace
  • ある種の VM でコードを実行する

ユーザーのスクリプトを何千回も実行する Python プログラムがあります。最大合計時間を 1 分間に制限したり、メモリ リソースを制限したり、ファイルやネットワーク接続へのアクセスを禁止したりするにはどうすればよいでしょうか? 理想的なソリューションまたはソリューションの組み合わせは何ですか?

4

3 に答える 3

0

cpython でサンドボックス化されたコードを実行する組み込みの方法はありませんが、pypy にはあります。

http://pypy.org/features.html#sandboxing

python wiki で説明されている他の方法がいくつかありますが (jailkit の使用など)、さまざまな欠点があるようです。

https://wiki.python.org/moin/SandboxedPython

私はpypyルートに行きます。

于 2013-10-28T19:21:35.790 に答える