gpt4 book ai didi

c++ - popen 与系统 : is popen as evil as system?

转载 作者:可可西里 更新时间:2023-11-01 18:41:07 30 4
gpt4 key购买 nike

popen 缓冲输出而系统没有。这是唯一的区别吗?

我知道 popen 和 system 都通过 shell 运行命令。但是,popen() 是否为 evil作为系统()?

最佳答案

看,从本质上讲,“系统是邪恶的”的全部内容是那些不考虑其特定用例的安全后果的人。 system 比自己做 fork/dup/exec “更邪恶”的唯一原因是使用不当,有人可能会引入恶意命令行。所以,例如

#include <stdlib.h>

int main(int argc, char** argv){
(void) system(argv[1]);
}

肯定是愚蠢的,因为有人可以将例如rm -rf/ 作为参数。当然,popen 也可以做一些类似的蠢事。

但是然后考虑使用用户字符串作为命令执行 forkexec 的操作:存在完全相同的漏洞和愚蠢行为。

弊端——也就是说,错误——在于使用随机输入字符串作为命令而不进行一些过滤,而不是在系统调用中。

关于c++ - popen 与系统 : is popen as evil as system?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861909/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com