软件限制策略
Windows XP 的发布引入了软件限制策略 (SRP) 设置,可帮助保护系统免受未知和可能危险的代码的侵害。 SRP 提供了一种机制,其中仅向受信任的代码授予对用户特权的无限制访问权限。 允许未知代码(可能包含与当前安装的程序冲突的病毒或代码)仅在受约束的环境(通常称为沙盒)中运行,不允许访问任何安全敏感用户特权。 正确使用 SRP 可以促使企业更加敏捷,因为会提供一个主动框架来防止出现问题,而不是一个反应性框架,该框架依赖于在出现问题后还原系统的代价高昂的替代方法。
SRP 取决于为可以在系统上运行的代码分配信任级别。 目前存在两个信任级别:不受限制和不允许。 为具有不受限制信任级别的代码授予对用户特权的无限制访问权限,因此只能将此信任级别应用于完全信任的代码。 不允许具有不允许信任级别的代码访问任何安全敏感用户特权,并且只能在沙盒中运行,这有助于防止不受限制的代码将不允许的代码加载到其地址空间中。
单个 COM 应用程序的 SRP 配置是通过注册表中应用程序的 AppID 键中的 SRPTrustLevel 值完成的。 如果未为 COM 应用程序指定 SRP 信任级别,则使用默认值“不允许”。 具有不受限制信任级别的 COM 应用程序具有对用户特权的无限制访问权限,但只能加载具有不受限制信任级别的组件,而不允许的 COM 应用程序可以加载具有任何信任级别的组件,但无法访问任何安全敏感用户权限。
除了单个 COM 应用程序的 SRP 信任级别外,还有另外两个 SRP 属性决定了 SRP 如何用于所有 COM 应用程序。 如果启用了 SRPRunningObjectChecks,则检查连接到正在运行的对象的尝试,以获得适当的 SRP 信任级别。 正在运行的对象的 SRP 信任级别严格程度不能低于客户端对象。 例如,如果客户端对象具有不受限制的信任级别,则正在运行的对象不能具有不允许的信任级别。
第二个属性确定 SRP 如何处理激活即激活器连接。 如果启用了 SRPActivateAsActivatorChecks,则会将为服务器对象配置的 SRP 信任级别与客户端对象的 SRP 信任级别进行比较,并且将使用更严格的信任级别运行服务器对象。 如果未启用 SRPActivateAsActivatorChecks,则无论配置了哪个 SRP 信任级别,服务器对象都将使用客户端对象的 SRP 信任级别运行。 默认情况下,已启用 SRPRunningObjectChecks 和 SRPActivateAsActivatorChecks。