交互式用户
交互式用户 是当前登录到运行 COM 服务器的计算机的用户。 如果标识设置为交互式用户,则如果服务器将其类工厂注册为多用途,则所有客户端都使用相同的服务器实例。 如果未登录任何用户,服务器将不会运行。 如果服务器具有客户端需要看到的图形用户界面(GUI),则应使用交互式用户作为服务器的标识。 但是,选择此标识会带来一些安全风险,因为服务器在登录用户的标识下运行,而无需登录用户的知识或同意。 此外,服务应用程序无法显示用户界面。 有关详细信息,请参阅 Interactive Services。
如果将 COM 服务器配置为以交互式用户身份运行,则服务器将在与客户端的用户标识匹配的交互式会话中启动。 但是,客户端应用程序可以使用会话名字对象引用服务器在与客户端标识不匹配的会话中提供的对象。 使用此方法时,客户端应用程序可以指定任何会话,在这种情况下,服务器将作为拥有会话的用户而不是启动用户运行。 此方案中的默认访问权限不允许启动用户调用服务器上的方法。 但是,以下安全风险仍然存在:
- 如果 COM 服务器公开的接口不受 COM 控制,例如 TCP 端口、命名管道、LPC 端口、共享内存部分等,则启动用户可以使用这些接口来影响服务器。 配置为作为交互式用户运行的 COM 对象应尽可能减少此攻击面。
- COM 对象可以自由设置其自己的访问权限。 如果对象在其 AppID 注册中或通过调用 CoInitializeSecurity来设置访问权限,则用户将能够启动服务器以其他用户身份运行,然后访问该对象。
相关主题