2

アプリケーションの 1 つを開発しているときに、ユーザーにより強力なフィルターを提供したいと考えるようになりました。したがって、単純なスクリプト インターフェイスをユーザーに提供したいと思います。スクリプト言語は Python になります。

明らかな理由から、特定の目的に合わせて言語の範囲を狭めたいと思います (ユーザーがサーバーの HDD ファイルなどに触れないようにします)。また、Python インタープリターを自分で書きたくありません (これは車輪の再発明であり、「新しい」車輪は最終的に長方形になります)。ただし、この目的に適したライブラリまたはモジュールは見つかりませんでした。

Compilation Customizer と Compiler Configuration を使用した Groovy のアプローチは、まさに私が望むものです。Python にも同様のものが存在しますか?

4

1 に答える 1

1

あなたが探しているのは、「サンドボックス」または「制限付き実行」と呼ばれるものです。この wiki ページでは、詳細の一部について説明しています

一言で言えば、Python オタクや専門家によって、Python の上にサンドボックスを構築するためのいくつかの努力がありましたが、最終的にはすべて失敗しました。

主な理由は、Python が何かを実行するための非常に多くのパスを提供しているため、サンドボックスが一般的なユース ケースを禁止する必要があるか (多くのライブラリと Python コードが役に立たなくなる)、サンドボックスに穴が開いて、コンセプト無駄。

単純で良いアイデアのように見えますが、今のところ解決策はありません。私の知る限り、 Python には、バイトコードコンパイラを微調整してGroovy Sandboxのようなものを実現するためのフックはありません。

関連している:

于 2013-11-04T14:34:38.070 に答える