c++ - 为什么在 Windows/unix/linux 中使用管道被认为是危险的?

标签 c++ c ipc pipe named-pipes

为什么管道被认为使用起来很危险?可以做些什么来避免这些安全问题?

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

最佳答案

(假设您从提到“c”和“IPC”开始谈论 Unix 命名管道。Windows 命名管道的工作方式有些不同)

任何有权限的人都可以写入命名管道,所以你必须小心权限和锁定(参见 flock() )。如果应用程序信任它从命名管道获得的输入(通常是这种情况,除非您明确地在其中构建输入验证),那么恶意用户可以在获得许可的情况下将任何需要的数据写入命名管道。

此外,任何具有权限的用户都可以从管道中读取并拦截从管道中传出的数据,如果您没有完全锁定它的话。然后数据从读者期望的输入流中丢失。

关于c++ - 为什么在 Windows/unix/linux 中使用管道被认为是危险的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/192021/

相关文章:

linux - 不相关进程之间的 mmap 文件

windows - Windows 上的安全命名共享内存,因此只有特定进程可以打开

c++ - 什么是抽象类没有数据成员的编译器生成的构造函数

c++ - c++中函数的指针

c++ - 无用(也许是错误的?)gcc 错误消息

c - 整体提升/转换:为什么我要关心结果类型的名称?

c - 处理大型数组而不会出现运行时错误

c++ - sf::Shader 和 sf::RectangleShape

c - 并排打印方阵旋转 C

linux - UNIX/Linux IPC : Reading from a pipe. 如何在运行时知道数据的长度?