私はサーバー上でユーザーがpythonスクリプトを送信するシステムを設計しています。このスクリプトは、ホワイトリストに載っているモジュールだけにアクセスすることを意図しています。"import"や "eval"を使わずにPythonでモジュールをインポートすることはできますか?
このようなシステムを安全に実装する1つの方法は、すべてのモジュールを削除し、「インポート」の基本的なメカニズムをオーバーライドして、選択したモジュールのみをインポートできるようにすることです(here)。しかし、このアプローチは、私の仕事の多くを必要とするでしょう。
もう1つのアプローチは、スクリプトを事前処理し、キーワード "import"と "eval"キーワードの有無を確認することです。これらのキーワードが存在する場合、スクリプトは実行されず、アラームはオフになります。しかし、それでもモジュールをインポートして悪意のあるものを実行できる他の方法はありますか?
これは可能ですが、非常に困難です。何かを逃すのは簡単でしょう。 – katrielalex