純粋な Python での Python のサンドボックス化には、悪意のあるユーザーを防ぐために Python コードをホスト環境から分離する必要があるため、独特の課題が生じますシステムを侵害しないようにします。この問題に対する 2 つの主要なアプローチを検討し、安全なスクリプト環境を作成するための適切な代替案を特定しましょう。
Messa は、グローバルへのアクセスが制限された制限された実行環境を作成することを提案しています。 。この方法は一見した保護を提供しますが、コードがサンドボックスから脱出できるようにする悪用の影響を受けやすいです。悪意のあるユーザーは、例外を悪用したり、内部状態を操作したり、バイトコード操作を利用してサンドボックスを突破したりする可能性があります。
このアプローチには、Python コードを解析し、選択的に削除することが含まれます。 ast モジュールを使用して不要な構造を削除します。 import ステートメント、関数呼び出し、その他の潜在的なセキュリティ リスクを排除することで、特定の要件に合わせた安全な実行環境を作成できます。
Python スクリプト構文が使用できない場合どうしても必要な場合は、変数、条件、関数呼び出しの基準を満たす、純粋な Python で書かれた他のオープンソース スクリプト インタプリタの使用を検討してください。これらのインタープリターは、ウェブ ゲームにより堅牢で安全な基盤を提供する可能性があります。
Google App Engine (GAE) を利用していないユーザーのために、PyPy サンドボックスは次のサービスを提供します。伝えられるところによると、「本物の」サンドボックス ソリューションです。その機能は、サンドボックス エスケープの防止における有効性を証明するユーザーから高く評価されています。
要件には、変数、基本的な条件文、および関数呼び出し (定義を除く) のサポートが特に記載されています。 )。コード解析と AST 操作を伴うアプローチ 2 は、評価すべき実行可能なオプションのように思えます。これによりカスタマイズが可能になり、不要な構成要素を効果的に削除できます。
純粋な Python での Python のサンドボックス化は、実行環境とコード解析手法を慎重に検討することで実現できます。本当にフル機能のスクリプト言語はゲームには過剰かもしれませんが、ここで紹介する代替言語は柔軟性とセキュリティのバランスを提供します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3