1

Google App EngineやWordPressなどのWebサイトやその他のWebサービスでは、ユーザーのコードに定期的に損傷を与えることなく、ユーザーが必要なコードを安全にアップロードできるようにするにはどうすればよいでしょうか。私は基本的にPythonでの「E​​val()」のより複雑な実装を使用してユーザーがアップロードしたコードを実行するプロジェクトに取り組んでいました。コードをホストする代わりに、開発者にコードをホストさせて、APIのようにアクセスできるようにすることで、これを安全に実行しようと考えていました。または、すべてを承認する必要があるかもしれません(アプリストアで行うように)。

とにかく、言い換えると、ユーザーがアップロードしたコードを安全にホストして実行するにはどうすればよいですか?

4

1 に答える 1

0

Python インタープリターは、過去に機能目標としてサンドボックス化を行っていました。ただし、Python ではうまくいきません。

残っているのはRestrictedPythonです(Ploneサイトのすべてにデプロイされています):

http://pypi.python.org/pypi/RestrictedPython

これは基本的に、実行前に Python AST を変更する eval() です。数行のスクリプトには役立ちますが、実際のアプリケーション開発には役立ちません。

ただし、私があなたなら、VM レベルでサンドボックス化を作成しようとはしません。代わりに、すべて (ディスク、ネットワークなど) への読み取り専用アクセスと、実行時間が長すぎる場合の強制終了タイムアウトを持つ、jailed / chrooted UNIX プロセスを作成します。これは、App Engine が行う方法とほとんど同じです。

于 2012-10-01T21:10:17.180 に答える