要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

受信任的应用程序

Silverlight

受信任的应用程序是您确定为需要提升信任的应用程序。 这些应用程序具有特殊的安装要求,但可跳过默认 Silverlight 安全沙盒的某些限制。 例如,受信任的应用程序可以在没有键盘限制的情况下访问用户文件和使用全屏模式。

默认情况下,基于 Silverlight 的应用程序在部分信任中运行。 这些沙盒应用程序对本地计算机具有受限访问,并且在帮助避免恶意行为的其他方式上受到约束。 然而,这些约束有时会禁止有用的或必需的方案,尤其是对于行业应用程序。

受信任的应用程序通常在浏览器应用程序外,尽管在 Silverlight 5 Beta 中,系统管理员可以使受信任的应用程序在浏览器内运行。 这可以简化企业部署和更新,并使您可以使用浏览器中的 WebBrowserNotificationWindow 类。 有关更多信息,请参见 如何使受信任的应用程序在浏览器内运行

您可以使用 Visual Studio 项目设计器来配置应用程序以便要求提升的信任。 设计器在应用程序清单中设置适当的值。 您还可以不必重新生成就更新现有应用程序的清单。 但是,您通常将需要修改其功能以便利用提升的信任。 有关配置的更多信息,请参见如何为浏览器外支持配置应用程序

在用户安装要求提升的信任的浏览器外应用程序时,默认的安装对话框将被安全警告替代。 此警告将指出应用程序可能会访问用户数据,因此应该仅从受信任的网站安装。 在安装后,应用程序在行为上与普通的浏览器外应用程序类似,但本文中介绍的行为除外。

根据应用程序是否具有有效的数字签名,安全警告会有所不同。 没有有效签名的应用程序(也称作未经验证的应用程序)存在更高的安全风险,因此这个警告就更重要了。 下图显示在添加数字签名之前和之后单个应用程序的安全警告。

未经验证的应用程序的安全警告

未经验证的应用程序的安全警告
经过验证的应用程序的安全警告

经过验证的应用程序的安全警告

有关更多信息,请参见本主题中的“应用程序签名”一节。

大多数的 Silverlight 文档在编写时都假定所有应用程序都是浏览器承载的沙盒应用程序。 本主题介绍受信任的应用程序与沙盒应用程序的差异。 具体而言,本主题介绍提升了的信任所支持的功能,并且说明如何确定应用程序是否在提升了的信任下运行。

注意 说明:

在 Silverlight 5 Beta 中,受信任的应用程序在以前的 Silverlight 版本中具有不可用的附加功能。 具体来说,Silverlight 5 Beta 受信任的应用程序可以执行以下操作:

  • 无限制访问本地文件系统。

  • 在未出现 MethodAccessException 的情况下访问安全关键的方法。 这只受基于 Windows 的应用程序的支持。

  • 在浏览器内部运行如果计算机和应用程序如前文所述正确配置。

  • 在浏览器之外运行时,可以创建多个窗口。 有关更多信息,请参见 Window 类。

  • 使用平台调用可在基于 Windows 的应用程序中调用非托管函数。

本主题包括下列各节。

受信任的应用程序不必受到跨域和跨架构访问限制,就可以执行网络和套接字通信。 例如,使用 HTTP 协议从一个子域安装的应用程序可以访问使用 HTTPS 协议的另外的子域上的媒体文件。 有关跨域通信的更多信息,请参见 Silverlight 中的 HTTP 通信和安全

此外,受信任的应用程序可以将 System.Net.Sockets 命名空间中的网络类与宽松的策略检查一起使用。 这些类包括新的 UdpAnySourceMulticastClientUdpSingleSourceMulticastClient 类。

受信任的应用程序无需跨域策略文件即可创建与任意主机上的任意端口的 TCP 连接。 目标端口不再需要介于 4502-4534 范围之内。 同样,使用 UdpAnySourceMulticastClientUdpSingleSourceMulticastClient 类的受信任的应用程序可以加入端口号大于等于 1024 的任意端口上的任意多路广播组,而不需要策略响应器对该连接授权。 有关更多信息,请参见 Silverlight 中的网络安全访问限制

沙盒应用程序要求用户同意才能访问 Content.FullScreenOptions 属性的 StaysFullScreenWhenUnfocused 设置以及 ClipboardAudioSinkVideoSink 类提供的功能。 受信任的应用程序不要求用户同意,在访问 AudioSink(麦克风)和 VideoSink(相机)功能时除外。

Silverlight 中的若干功能要求您使用它们以便响应用户启动的操作,例如按钮单击事件。 您还必须在用户启动的操作的一秒内使用这些功能。 此要求是一项安全功能,用于防止应用程序欺骗操作系统功能。

受信任的应用程序无需用户启动的操作就可以使用大多数这些功能。 例如,您可以在 Application.Startup 事件处理程序中进入全屏模式,或者在长时间的格式设置操作后写入 Clipboard

如前面部分中所述,受信任的应用程序可以无需用户启动的操作或用户同意,就进入和保持在全屏模式中。 受信任的应用程序还可以使用 Content.FullScreenOptions 属性的 StaysFullScreenWhenUnfocused 设置。

此外,进入全屏模式的受信任的应用程序将不显示消息“按 ESC 退出全屏模式”。 受信任的应用程序不自动截获任何击键并且没有全屏模式下的任何键盘限制。

这一键盘限制变化的一个后果是,按下 ESC 在受信任的应用程序中将不退出全屏模式。 这使您可以将 ESC 键用于其他功能。 但是,您必须提供自己的用户界面以便退出全屏模式。

有关更多信息,请参见 全屏支持

受信任的应用程序可以隐藏浏览器外应用程序窗口的标题栏和边框,以便提供完全自定义的用户界面。 有关启用此功能的信息,请参见如何为浏览器外支持配置应用程序

在您隐藏标题栏和边框时,Silverlight 只在白色背景上显示应用程序内容。 因为背景是不透明的,所以,您不能使用此功能创建不规则形状的应用程序。 但是,您可以选择使用圆角,它们具有 9 个像素的角半径。 有关更多信息,请参见 WindowSettings.WindowStyle 属性。

若要替换标题栏和边框提供的功能,您可以使用 Window 类的 API。 若要使用户能够拖动窗口或窗口边框,请使用 DragMoveDragResize 方法。 您还可以通过使用 LeftTopWidthHeight 属性,调整窗口位置和大小。 若要使用户能够最小化和最大化窗口,请使用 WindowState 属性。 若要使用户能够关闭窗口,请使用 Close 方法。

受信任的应用程序可以访问 System.IO 以及不可用的相关类型。 这使得您可以直接访问用户文件,而不必使用 OpenFileDialogSaveFileDialog 类。

在 Silverlight 5 Beta 中,受信任的应用程序无限制访问本地文件系统。 然而,在早期版本中,受信任的应用程序只能访问用户文件夹中的文件,具体为 MyDocumentsMyMusicMyPicturesMyVideos 文件夹。

注意 说明:

这些文件夹不同于名为“文档”、“音乐”、“图片”和“视频”的 Windows 7 库。 这些库文件夹通常将用户文件夹的内容与其他文件夹(例如共享媒体文件夹)的内容组合在一起。 但是,除非通过 OpenFileDialogSaveFileDialog 类,受信任的应用程序不能访问非用户文件夹。

您必须使用 Environment.GetFolderPath 方法获取用户文件夹的路径。 您不能直接指定这些路径。

下表列出了以 Silverlight 4 为目标的受信任应用程序可使用的 System.IO 命名空间中的类。 该表还指出不支持的每个类的成员。

不支持的成员

Directory

GetCurrentDirectory

GetDirectoryRoot

SetCurrentDirectory

DirectoryInfo

Root

MoveTo

File

SetAttributes

FileInfo

(支持所有成员。)

FileStream

BeginRead

BeginWrite

CanRead

CanSeek

CanWrite

EndRead

EndWrite

Path

GetTempFileName

GetTempPath

StreamReader

采用 Stream 参数的构造函数

采用 Stream 参数的构造函数

有关更多信息,请参见指示的参考主题和如何在受信任的应用程序中访问本地文件系统

受信任的应用程序可以访问本机操作系统的某些功能。 例如在 Windows 上,受信任的应用程序可以使用自动化功能并且访问或操作 Office 套件和其他应用程序公开的组件。 另外,在 Silverlight 5 Beta 中,您可以创建平台 invoke 调用来调用非托管函数。

有关与自动化交互的更多信息,请参见 AutomationFactory如何在受信任的应用程序中使用自动化 有关使用平台调用的更多信息,请参见如何:从受信任的应用程序调用未托管的代码

若要确定某一应用程序当前是否在提升的信任下运行,可查看 HasElevatedPermissions 属性。 当应用程序在部分信任下运行时,这用于提供备用代码路径。

尽管受信任的应用程序不具有针对主机的完全访问权限,但它们可以访问个人数据并且可能造成损害。 因此,在您执行安全评估和审核时,应将它们视作完全信任的应用程序。 若要禁止用户安装或运行受信任的应用程序,系统管理员可以使用计算机策略设置来拒绝访问,如本文的“针对提升的信任的策略限制”部分中所述。

即使受信任的应用程序是由具有管理员特权的用户安装的,这些应用程序也使用用户特权运行。 但是,受信任的应用程序可以在开发过程中在调试时使用提升的特权运行,因此请确保相应进行测试。

Silverlight 在具有一组统一的特权(受信任的或沙盒)的 AppDomain 实例内运行所有应用程序代码。 应用程序开发人员负责确认并验证聚合到应用程序中的任何外部组件。

浏览器外应用程序不比其宿主网站更安全。 因此,用户在安装或更新浏览器外应用程序时必须依赖于宿主站点的安全性。 下面的列表描述为帮助增强安全性可以采取的某些措施。

  • 请按照本主题的“应用程序签名”部分中介绍的内容,对您的应用程序进行签名。

  • 如果您的应用程序从其主机服务器访问资源,它应该确认 SilverlightHost.Source 属性值匹配预期的源站点 URI。

  • 如果您的应用程序处理敏感信息或者从服务器加载附加代码,则应将 HTTPS 用于应用程序 URI 和安全通信。 请注意,在应用程序检查是否有更新时始终使用原始应用程序的 URI(包括协议)。

  • 处于连接状态时,浏览器外应用程序可以通过 HTTPS 访问网络资源。 已到期或无效的证书将导致失败的网络调用。 不过,目前没有展现安全通道的内置指示器。 为了增加用户信任,请考虑提供您自己的指示器。

浏览器内受信任应用程序亦受到浏览器安全设置的限制,如 互联网浏览器保护模式

有关更多信息和常用 Silverlight 安全指导,请参见 安全性

向您的受信任的应用程序添加数字签名是一个十分重要的步骤,它可以帮助确保应用程序的安全并在安装过程中增加客户信任度。 此外,只有具有有效数字签名的受信任的应用程序才能使用浏览器外更新机制。 若要更新没有有效签名的受信任的应用程序,用户必须卸载旧版本并且手动安装新版本。 在 Silverlight 5 Beta 中,受信任的应用程序还必须具有有效的数字签名来在浏览器里运行。 有关更多信息和附加要求,请参见 如何使受信任的应用程序在浏览器内运行

要将数字签名添加到受信任的应用程序,您可以使用 Visual Studio 项目设计器的签名选项卡。 为完成此,请选择“项目”菜单中的<ProjectName> Properties,再单击“签名”键,然后选择“对 Xap 文件进行签名” 然后,您可以使用提供的按钮选择现有的验证码 X.509 代码签名证书或创建一个测试证书。

您还可通过使用具有 Authenticode X.509 代码签名证书的 SignTool.exe 实用工具来添加数字签名。 例如,您可以使用以下命令行:

signtool sign /v /f certificateFile.pfx   fileToSign

有关更多信息,请参见 SignTool.exe (Sign Tool)(SignTool.exe(签名工具))。

代码签名仅与受信任的应用程序相关。 只要用户安装或更新应用程序,Silverlight 就会验证签名和证书。 用户无需有效的签名就可以安装受信任的应用程序。 但是,如果原始应用程序和更新没有用同样有效的、经过验证的代码签名证书进行签名,Silverlight 将阻止信任的应用程序进行更新。 此外,在更新时证书不得已到期。 请确保在您的部署和更新计划中考虑到证书到期日期。

注意 说明:

在源站点主机为 localhost127.0.0.1 时,Silverlight 不禁止应用程序更新。 这使您无需数字签名便可以测试您的更新代码。

有关更新应用程序的更多信息,请参见浏览器外支持

系统管理员可以配置计算机以便防止用户安装或运行要求提升的信任的浏览器外应用程序。

如果安装受信任的应用程序被禁用,则尝试安装此类应用程序将不起作用。 在此情况下,已安装(或者由管理员安装)的受信任的应用程序将正确工作。

如果正在运行的受信任的应用程序被禁用,则尝试运行此类应用程序将显示空的浏览器外应用程序窗口。 但通常来说,如果正在运行的受信任的应用程序被禁用,则尝试安装它们也将被禁用。

有关更多信息,请参见 Group Policy Settings(组策略设置)。

Silverlight for Windows Phone Silverlight for Windows Phone Silverlight 3 均不支持受信任的应用程序。

社区附加资源

添加
显示: