Interaktiver Benutzer
Der interaktive Benutzer ist der Benutzer, der derzeit auf dem Computer angemeldet ist, auf dem der COM-Server ausgeführt wird. Wenn die Identität als interaktiver Benutzer festgelegt ist, verwenden alle Clients dieselbe Instanz des Servers, wenn der Server seine Klassenfactory als Mehrfachverwendung registriert. Wenn kein Benutzer angemeldet ist, wird der Server nicht ausgeführt. Wenn der Server über eine grafische Benutzeroberfläche (GUI) verfügt, die der Client anzeigen muss, sollten Sie den interaktiven Benutzer für die Identität des Servers verwenden. Die Auswahl dieser Identität birgt jedoch einige Sicherheitsrisiken, da der Server unter der Identität des angemeldeten Benutzers ohne das Wissen oder die Zustimmung des angemeldeten Benutzers ausgeführt wird. Darüber hinaus kann eine Dienstanwendung keine Benutzeroberfläche anzeigen. Weitere Informationen finden Sie unter Interactive Services.
Wenn ein COM-Server für die Ausführung als interaktiver Benutzer konfiguriert ist, wird er in einer Terminaldienstumgebung in der interaktiven Sitzung gestartet, die der Benutzeridentität des Clients entspricht. Die Clientanwendung kann jedoch den Sitzungsmoniker verwenden, um auf ein Objekt zu verweisen, das vom Server in einer Sitzung bereitgestellt wird, die nicht mit der Clientidentität übereinstimmt. Wenn dies verwendet wird, kann die Clientanwendung eine beliebige Sitzung angeben. In diesem Fall wird der Server als der Benutzer ausgeführt, der die Sitzung besitzt, nicht der startende Benutzer. Die Standardzugriffsberechtigungen in diesem Szenario würden es dem Starten von Benutzern nicht ermöglichen, Methoden auf dem Server aufzurufen. Die folgenden Sicherheitsrisiken bleiben jedoch bestehen:
- Wenn der COM-Server Schnittstellen verfügbar macht, die nicht von COM gesteuert werden, z. B. TCP-Ports, Named Pipes, LPC-Ports, Shared Memory-Abschnitte usw., können diese vom startenden Benutzer verwendet werden, um den Server zu beeinflussen. COM-Objekte, die für die Ausführung als interaktiver Benutzer konfiguriert sind, sollten diese Angriffsfläche so weit wie möglich reduzieren.
- COM-Objekte können ihre eigenen Zugriffsberechtigungen festlegen. Wenn das Objekt Zugriffsberechtigungen entweder in seiner AppID-Registrierung oder durch Aufrufen von CoInitializeSecurityfestlegt, um den Startbenutzerzugriff zu ermöglichen, kann der Benutzer den Server starten, um als anderer Benutzer ausgeführt zu werden, und dann auf das Objekt zugreifen.