任意のスクリプトを実行するユーザーがプロセスを停止できないように、動的言語ランタイム (DLR) をホストしたいと思いますか?
DLR ホスティング仕様では、DLR を別の ApplicationDomain でホストする方法について説明しています。これにより、スクリプト ランタイムを破棄してアンロードし、CAS を介して特定の操作を制限できます (たとえば、ファイル システムへのアクセスを制限したり、リフレクションの使用を禁止したりできます)。
しかし、たとえば次のような方法もあります: - スクリプトが使用するメモリの最大量を制限しますか? - スクリプトによって作成されるスレッドの数を制限しますか? - デッドロックされたスクリプトを検出しますか?
SQL サーバー用に開発されたアンマネージ .net ホスティング APIを使用すると、このようなきめ細かな制御が可能になると思います。これが進むべき方向ですか?この種の一般的な .net サンドボックス用のオープン ソース プロジェクトはありますか?
私が見つけたいくつかの潜在的に役立つ参考文献を次に示します。
- 信頼されていないアドインを .NET Framework 2.0 で安全にホストするためのテクニックを発見する
- DLR ディスカッション リストのホスト保護スレッド
- ホスト保護の使用(.Net セキュリティ ブログ)