为什么管道在Windows / unix / linux中被认为是危险的?

为什么管道被认为是危险的? 可以采取哪些措施来避免这些安全问题?

我最感兴趣的是Windows,但如果您有其他操作系统信息,请提供。

(假设您在提到’c’和’IPC’时谈论的是Unix命名管道.Windows命名管道的工作方式有所不同)

任何具有权限的人都可以写入命名管道,因此您必须小心权限和锁定(请参阅flock() )。 如果应用程序信任它从命名管道获取的输入(除非您明确地在其中构建输入validation,通常就是这种情况),然后恶意用户可以将任何所需数据写入命名管道(如果他们有权限)。

此外,任何具有权限的用户都可以从管道中读取并拦截来自它的数据(如果您尚未完全锁定它)。 然后,读取器期望的输入流中缺少数据。