Silverlight 4 的 COM+ 自动化带来安全和可移植性隐忧

阅读数:789 2010 年 2 月 10 日

话题:.NET安全语言 & 开发架构

在使用高级权限运行浏览器外(Out-Of-Browser,OOB)应用时,Silverlight 4 支持 COM+ 自动化。微软表示说这个支持是应企业用户的需求而提供的,他们常希望能通过 Silverlight 提供类如 Office 自动化那样的功能。

Silverlight 的项目经理 Justin Angel 最近详细介绍了如何启动 Silverlight 应用以使用 COM+(注意:该文需要 Silverlight 支持)。COM+ 自动化仅支持有高级信任许可的 OOB Silverlight 应用。不像全部信任功能,高级信任许可意味着操作者可以在少许限制的条件下,在 Windows 计算机上执行几乎所有的命令。比如,操作者可以读 / 写文件系统,但是只限于“我的”文件夹,比如我的文档,我的视频,我的图片等。Silverlight 4 可以通过 COM+ 做的事情如下所示:

  • 运行命令或者可执行(EXE)文件
  • 读注册表
  • 访问本地 ODBC
  • 读 / 写硬盘(在上文提到的限制条件下)
  • 自动化 Office

因为很多人已经将 Silverlight 看作另一个 Flash 播放器,一个可限制访问其运行的计算机上的插件,所以让 Silverlight 访问 COM+ 引来众多人的关注。一方面它带来了安全问题,另一方面它破坏了对其他平台的可移植性。好几个开发者在WPF Disciples(WPF 爱好者)群组中发表评论:

Shawn Wildermuth 说:我不想过多地争论。我理解为什么微软这样做,但是我还是认为这样做很不妥。恕我直言,COM 只能在 Windows 下运行对其他平台来说很不爽。

Marlon Grech,微软客户端应用的 MVP 说:我很赞同 Shawn 所说的,为 SL 增加 COM+ 支持违反了跨平台和一次编写处处运行的主张。即使他们为 AppleScript 增加支持,对我们来说也是噩梦一场。另外……我要说,武器本身没什么问题,关键是使用这些武器的人。对吧?:)

Jeremiah Morrill:在我看来,主要的“概念上”的安全问题是“信任级别”。CoreCLR 也还没有授予“完全信任”模式,但这些 COM 实例,按照定义,是运行在沙箱之外的。我想这会让那些期望或设想得到 A,却拿到 B 的开发者和用户都很迷糊……一般来说,在讨论安全问题时,这是不妥的。

对于一些人来说,COM+ 自动化和在高级信任许可下运行 Silverlight 应用并不是什么安全问题,因为用户需要先安装才能运行 OOB 应用,他们也被明显警告说应用将会访问他们的硬盘。理论上,这会像其他应用一样,运行一个桌面应用——但是,恐惧恐怕来自于 Silverlight 被假设成一个运行在沙箱里的绝对安全的浏览器应用,而不是一个桌面应用。

另外一个问题是移植性。对于缺少 COM+ 的 Mac 机而言,这个功能有什么用吗?Angel 提到说,微软正在调查通过 AppleScript 在 Mac 机上支持 COM 的可能性,并说“如果微软最终没有决定在 Mac 机上支持 Silverlight 4 RTM,那么,并不是因为它不能做到”。对于 Moonlight,Angel 说:

Moonlight 在一开始创建时,就有超级安全的模式。Mono 支持在有着完全信任能力的 GtkWidget 中运行 Moonlight。所以,在 Silverlight 有高级权限模式时,Mono 确实完全信任模式。

同事,系统管理员可以对系统进行配置,以阻止用户安装和运行需要高级信任许可的 OOB 应用。Group Policy Setting提到了更多关于这方面的信息。

查看英文原文:Silverlight 4’s COM+ Automation Raises Security and Portability Concerns