软件限制策略
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。