.NET Framework 开发人员指南
ClickOnce 部署和安全

使用 ClickOnce 技术部署的应用程序运行在“沙箱”中,而且这些应用程序享有的权限受到安全区域的限制。下表列出基于部署位置的默认权限:

部署位置 安全区域

从 Web 运行

Internet 区域

从 Web 安装

Internet 区域

从网络文件共享安装

Intranet 区域

从 CD-ROM 安装

完全信任

Note注意

默认权限取决于部署初始应用程序版本的位置;应用程序的更新将继承这些权限。如果将应用程序配置为从 Web 或网络位置检查更新且存在较新的版本,则初始安装可能会获得 Internet 或 Intranet 区域的权限,而不是完全信任权限。

安全和权限

作为开发人员,您有责任确保您的应用程序以适当的权限运行。

Note注意

Visual Studio 允许您在目标安全区域内调试应用程序,并能帮助您开发安全的应用程序。

有时 ClickOnce 应用程序可能需要提升权限。例如,需要与 Excel 电子表格交互的应用程序所需的权限将超出为 Internet 或 Intranet 区域定义的权限。如果应用程序需要提升权限,程序安装期间系统会提示用户授予权限。如果用户同意授予权限,则可安装应用程序;如果用户不同意,则停止安装。

Note注意

如果不想让系统提示用户,系统管理员可以指定一个 ClickOnce 部署策略,将某个特定的应用程序发行者定义为受信任的来源。在部署此策略的计算机上,系统会自动授予权限而不会提示用户授予权限。

应用程序的权限是由应用程序清单的 <trustInfo> 元素元素中的设置确定的。Visual Studio 可以根据项目的“安全”属性页中的设置自动生成这些信息。ClickOnce 应用程序仅被授予它所请求的特定权限。例如,文件访问需要完全信任权限时,如果应用程序请求文件访问权限,则它仅被授予文件访问权限,而不会被授予完全信任权限。开发 ClickOnce 应用程序时,应注意只请求应用程序需要的特定权限。

此外,应使用 Authenticode 签名对部署清单进行签名。安装期间权限对话框将向用户显示基于 Authenticode 签名的发行者信息,以向用户表明该应用程序来自受信任的来源。.NET Framework SDK 包含一个文件签名工具 (Signcode.exe),允许您对清单进行签名。有关更多信息,请参见文件签名工具 (Signcode.exe)

ClickOnce 和 ASP.NET 基于窗体的身份验证

如果要控制每个用户能访问哪些部署,则不应允许对 Web 服务器上部署的 ClickOnce 应用程序进行匿名访问。而应根据用户的标识(使用 Windows NT 身份验证)允许用户访问已安装的部署。

如果部署到没有 Windows NT 身份验证的环境,一种可能的解决方案是使用 ASP.NET 基于窗体的身份验证对用户进行身份验证。但是,ClickOnce 使用持久性 Cookie;这些 Cookie 带来了安全风险,因为它们驻留在 Internet Explorer 缓存中,可能受到攻击。

因此,如果在部署脱机应用程序(在“发布”页上启用了“该应用程序也可以脱机使用(可以从“开始”菜单启动)”的 ClickOnce 部署),则除 Windows NT 身份验证之外,任何身份验证方案也都不受支持。一个可接受的解决方案是允许任何用户安装应用程序,但是让客户端应用程序在激活时通过 Web 服务对用户进行身份验证。

请参见

标记 :


Page view tracker