Dela via


Interaktiv användare

Den interaktiva användaren är den användare som för närvarande är inloggad på datorn där COM-servern körs. Om identiteten är inställd på att vara den interaktiva användaren använder alla klienter samma instans av servern om servern registrerar sin klassfabrik som multi-use. Om ingen användare är inloggad körs inte servern. Om servern har ett grafiskt användargränssnitt (GUI) som klienten behöver se bör du använda interaktiv användare för serverns identitet. Att välja den här identiteten medför dock vissa säkerhetsrisker eftersom servern körs under identiteten för den inloggade användaren utan den inloggade användarens kunskap eller medgivande. Dessutom kan inte ett tjänstprogram visa ett användargränssnitt. Mer information finns i Interactive Services.

Om en COM-server har konfigurerats för att köras som interaktiv användare, i en terminaltjänstmiljö, startas servern i den interaktiva session som matchar klientens användaridentitet. Klientprogrammet kan dock använda sessionsmonikern för att referera till ett objekt som tillhandahålls av servern i en session som inte matchar klientidentiteten. När detta används kan klientprogrammet ange vilken session som helst, i vilket fall servern körs som den användare som äger sessionen, inte den startande användaren. Standardbehörigheterna för åtkomst i det här scenariot tillåter inte att den startande användaren anropar metoder på servern. Följande säkerhetsrisker kvarstår dock:

  • Om COM-servern exponerar gränssnitt som inte styrs av COM, till exempel TCP-portar, namngivna pipes, LPC-portar, delade minnesavsnitt och så vidare, kan dessa användas av den startande användaren för att påverka servern. COM-objekt som har konfigurerats för att köras som den interaktiva användaren bör minska den här attackytan så mycket som möjligt.
  • COM-objekt kan ange sina egna åtkomstbehörigheter. Om objektet anger åtkomstbehörigheter, antingen i sin AppID-registrering eller genom att anropa CoInitializeSecurity, för att tillåta att användaren startar åtkomst, skulle användaren kunna starta servern för att köras som en annan användare och sedan komma åt objektet.

programidentitet

starta användare

tjänstidentitet

angiven användare