您的位置:首页 > 其它

windows下的session隔离机制以及带来的影响

2016-11-10 09:21 561 查看
      关于windows的session机制,我们先来看下官方文档中的描述:

In Windows® XP, Windows Server® 2003, and earlier versions of Windows, all services run in Session 0 along with applications. This situation poses a security risk. In Windows Vista®, Windows Server 2008, and later versions of Windows, the operating system
isolates services in Session 0 and runs applications in other sessions, so services are protected from attacks that originate in application code.

      从windows xp以及server 2003开始,在以后的windows版本中,session 0不再是一个用户session,系统中所有的系统进程和服务都运行在session 0上,同时session 0在系统中是没有UI的,session 0 不接收任何UI的输入输出。相对应登录用户启动的应用都运行在相对应登录用户的session ID上,用户登录所启用UI的session ID和启用应用的session ID是相同的。这样设计带来的好处官方文档中对此的描述是能够使应用的代码攻击不了系统的服务。但在实际应用中,却对远程操作系统带来了一定的麻烦。

       由于在实际环境中,远程控制软件是以服务的形式安装在操作系统上的,因此该服务所启的进程一定是运行在session 0上的。但实际需要部署的应用却需要接受用户session所发来的消息队列。我们看下官方文档对此的描述:

A service tries to use window message functions such as SendMessage and PostMessage to communicate with an application. This does not work because the application is running in a different session and therefore has a different message queue.The messages
never arrive at their destination. The same is true for applications that try to communicate with services through window messages.

也就是说用户程序调用SendMessage和服务进程进行通讯时,由于不同的session有不通的消息队列,因此消息是无法发送到服务进程的。同时,系统也不支持让用户在session 0上进行UI的操作。因此,必须把服务应用部署在非session 0上才能保证服务应用正常工作。那就意味着远程控制软件必定不能以服务的形式而必须以用户登录启动的形式安装在系统上。这样才能保证远程启动的应用的进程和用户发送的消息在同一个session中被消息队列进行处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  操作系统 windows