互動式使用者
互動式使用者是目前登入 COM 伺服器執行所在電腦的使用者。 如果身分識別設定為互動式使用者,則如果伺服器將其類別處理站註冊為多重用途,則所有客戶端都會使用相同的伺服器實例。 如果未登入任何使用者,伺服器將不會執行。 如果伺服器具有用戶端需要看到的圖形使用者介面 (GUI),您應該使用互動式使用者作為伺服器的身分識別。 不過,選擇此身分識別會產生一些安全性風險,因為伺服器會在登入使用者的身分識別下執行,而不需要登入用戶的知識或同意。 此外,服務應用程式無法顯示使用者介面。 如需詳細資訊,請參閱 互動式服務。
如果 COM 伺服器設定為以互動式使用者身分執行,在終端服務環境中,伺服器將會在符合用戶端使用者身分識別的互動式會話中啟動。 不過,用戶端應用程式可以使用會話Moniker參考伺服器在不符合用戶端身分識別的會話中所提供的物件。 使用此選項時,用戶端應用程式可以指定任何工作階段,在此情況下,伺服器會以擁有工作階段的使用者身分執行,而不是啟動使用者。 此案例中的預設訪問許可權不允許啟動使用者呼叫伺服器上的方法。 不過,下列安全性風險依然存在:
- 如果 COM 伺服器公開不受 COM 控制的介面,例如 TCP 連接埠、命名管道、LPC 埠、共用記憶體區段等等,啟動使用者即可使用這些介面來影響伺服器。 設定為以互動式使用者身分執行的 COM 物件應盡可能減少此受攻擊面。
- COM物件可以自由設定自己的訪問許可權。 如果物件在其 AppID 註冊中設定訪問許可權,或藉由呼叫 CoInitializeSecurity 來允許啟動使用者存取權,使用者就能夠啟動伺服器以其他使用者身分執行,然後存取物件。
相關主題