我希望在我的应用中使用命名管道。服务器将是NT服务,客户端是用户空间应用程序。 我认为如果有人可以创建锁定管道(或其他东西)的应用程序客户端并且我的服务器停止接收消息,则可能会出现问题。
我想补充一点,客户端应始终发送消息,服务器应接收消息。如果有人打扰了这个过程就会出现问题。
我需要建议如何保护命名管道
答案 0 :(得分:0)
AFAIK,多个不同的客户端进程都可以打开命名管道并写入单个读取器进程。这肯定适用于Unix,所以它也可能在Windows上运行。
这意味着单个进程无法阻止其他进程写入服务器 - 尽管行为不当的进程可能会使服务器的消息不堪重负。对过度热心的客户没有简单的保护。
答案 1 :(得分:0)
在实现“安全的”命名管道方面,需要考虑一些事项。
Windows操作系统中的命名管道放置在特殊路径hash = Hash.from_xml("my_xml.xml")
中,每个用户(包括来宾)都可以访问。
一个命名管道可以有多个共享相同名称的实例;
第一个实例的创建者决定最大实例数并指定安全描述符。
如果命名管道不存在,则任何用户都可以创建第一个实例并设置所有管道实例的DACL。
如果存在,则只有具有\\.\pipe\
权限的用户才能创建新实例。
FILE_CREATE_PIPE_INSTANCE
标志,以确保它正在创建第一个实例。信用:Man-in-the-Machine (MitMa) attacks on ill-secured inter process communications,它解释了不保护许多IPC方法(包括命名管道)的危害。