代码之家  ›  专栏  ›  技术社区  › 

IIS下的Windows命名管道ACL

  •  2
  •  · 技术社区  · 6 年前

    我的代码使用开发机器上的另一台服务器运行正常,但在IIS上,当我在CGI进程中调用CreateFile()时,会出现安全问题。

    Windows服务是命名管道服务器,因此CGI进程正在尝试作为客户端连接到该命名管道。

    我找到了一些代码,通过调用以下命令创建了一个全局安全描述符,其标志为security\u WORLD\u SID\u AUTHORITY:

      InitializeAcl()
      AddAccessAllowedAce()
      SetSecurityDescriptorDacl()
    

    我假设管道服务器CreateNamedPipe()必须使用SECURITY_ATTRIBUTES结构中的这个ACL调用,但是命名管道客户端呢?

    我继承了它吗

     SecurityAttributes.bInheritHandle   = TRUE;
    

    1 回复  |  直到 16 年前
        1
  •  1
  •   Murray    16 年前

    由于管道是由服务器创建的,因此只有服务器需要指定ACL,客户端使用NULL表示ACL。

    仅当命名管道是在一个进程中创建的,并且该进程创建了一个新进程,您希望生成的进程在该进程中直接访问句柄(它不会重新打开句柄,而是通过其他方式(如命令行)获取值),继承才适用。

    sysinternals 查看进程中打开的命名管道,然后查看ACL。