【问题标题】:Restricting use of namespaces in MS Script Engine限制在 MS 脚本引擎中使用命名空间
【发布时间】:2011-11-05 03:33:08
【问题描述】:

.NET Framework 具有强大的功能,支持在运行时编译代码并运行它,以实现某些类型的脚本功能。 CodeProject 上已经有一些脚本引擎可用,微软也有自己的库。

我正在开发一个网络自动化软件,我想在应用程序中包含 Microsoft 脚本引擎。

问题是脚本引擎允许在引用的程序集中使用所有命名空间,我想将使用限制在选定的几个命名空间。

using System; // allowed.
using System.Linq; // allowed.
using System.Reflection; // restrict.

如何在脚本中限制命名空间的使用。

【问题讨论】:

  • 你能访问将要编译的代码吗? (我的意思是代表代码的字符串)
  • 那么,您打算使用哪个引擎?解决方案可能取决于此。
  • 您想限制命名空间或 DLL(如 System.dll)的使用吗?如果“禁止”命名空间与“允许”命名空间位于同一个 DLL 中,则第一个几乎无法实现...或者您是否尝试将其作为某种安全措施(沙箱...)?

标签: c# .net windows scripting scriptengine


【解决方案1】:

按名称限制命名空间并没有多大作用,因为扩展可以在其自己的程序集中包含您不喜欢的类的副本,而只是重命名。

听起来您真正想要的是安全边界。将扩展程序放在不受信任的 AppDomain 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-04
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多