4

私は cs-script を研究していますが、すぐに使用できる安全性について疑問に思っています。スクリプトが動的にロードおよびアンロードされることは知っていますが、そのスクリプトは実行中のアセンブリをエスケープできますか? つまり、リフレクションを使用して、同じプロセス内の他のアセンブリからクラスにアクセスしてインスタンス化できますか?

だから私の質問は、cs-script にはデフォルトでセキュリティが組み込まれているのか、それとも気にしないのかということです。

4

2 に答える 2

3

http://www.csscript.net/に従って CS-Script を意味する場合、はい、通常の構文で他のアセンブリを参照して呼び出すことができます。

using MyOtherAssembly;

CS-Script は、暗黙的な読み込みを使用して、using ステートメントの名前空間に基づいて、どのアセンブリを読み込むかを試みます。これは、すべての状況で動作することが保証されているわけではありません。その場合、明示的な読み込みを使用する必要があります。たとえば、CS-Script に指示を与えて、必要なアセンブリを明示的に読み込むことができます。

//css_ref "..\MyOtherAssembly.dll"
using MyOtherAssembly;

//css_refは、CS-Script によってアセンブリをロードするディレクティブとして処理される特別なコメントです。この場合、参照されるアセンブリはスクリプトの親ディレクトリにあります。これは、通常のアセンブリのプロジェクト ファイル内のアセンブリ参照と同様の機能を果たします。CS-Script コマンド ラインを使用して、アセンブリを明示的に読み込むこともできます。

また、スクリプトが呼び出される前に、参照されているアセンブリが既に AppDomain に読み込まれている場合は、暗黙的または明示的な読み込みを使用する必要がないこともわかりました。CS-Script は名前空間が既に AppDomain に存在することを検出するため、暗黙的な読み込みを気にしません。

アセンブリの読み込みの詳細については、http: //www.csscript.net/help/using_.net_assemblies.html を参照してください

Edit1:暗黙的な読み込みを無効にすることはできませんが、スクリプトを他のアセンブリなしでディレクトリに配置することはできます。これにより、暗黙的な読み込みで他のアセンブリを見つけることができなくなります。スクリプトは、既に読み込まれている名前空間を呼び出すことができます。しかし、これは「あいまいさによるセキュリティ」にすぎません。マネージ コードの性質上、特定の人物がリフレクションを介してコードにアクセスする可能性が常にあることを意味します。

于 2016-02-10T17:46:27.970 に答える
0

要するに: いいえ、CS-script はそのままではセキュリティ機能を提供しません。

ここで回答: https://stackoverflow.com/a/8692459/1657476

当面の魅力的なソリューションは、.NET Sandbox を使用することです。これはまさにこの種のシナリオ向けに設計されています。CLR 標準サンドボックスは、CS-Script を使用してスクリプトを実行するホスト アプリケーションで使用できます。疑わしいスクリプトをロードする前に CAS を初期化し、残りは CLR の責任です。また、ディレクトリ/ファイルのアクセス許可を構成する必要がある場合は、CAS ツールを使用して行います。このように、スクリプトは、ユーザーが提供するルーチンの「移送」です。CS-Script は、このようなトランスポートを実装するための便利なメカニズムですが、実際のセキュリティの問題は、考えられるほぼすべてのセキュリティ シナリオをカバーする包括的な機能セットを備えた .NET Sendoxing によって対処されます。

cs-script で .Net Security Credentials を使用するサンプルは、http://www.csscript.net/Samples.html (sandbox.zip) で入手できます

信頼されていない cs-script を安全に (できるだけ分離して) 実行するにはAppDomain、スクリプトを (新しいアプリ ドメインに) ロードする前に、セキュリティ制限付きで新しい を作成します。その後、プライマリ ドメインとスクリプト ドメインの間でデータをマーシャリングできます。https://msdn.microsoft.com/en-us/library/bb763046%28v=vs.110%29.aspxを参照してください。

于 2016-02-13T07:01:34.713 に答える