c - 有没有办法阻止 sh/bash 执行命令替换?

标签 c bash embedded-linux sh

我想从一个 C 程序调用一个 shell 脚本,并将文件名作为参数。用户可以控制文件名。 C 类似于(省略初始化/错误检查):

sprintf(buf, "/bin/sh script.sh \"%s\"", filename);
system(buf);

目标设备实际上是一个嵌入式系统,所以我不需要担心恶意用户。显然,这将是 Web 环境中的攻击媒介。尽管如此,如果系统上有一个文件名,例如,其名称中包含反引号,该命令将失败,因为 shell 将对该名称执行扩展。有什么可以防止命令替换的吗?

最佳答案

好吧,您总是可以通过调用 fork() 然后调用 execv() 来重新实现 system()。

http://www.opengroup.org/onlinepubs/000095399/functions/system.html

关于c - 有没有办法阻止 sh/bash 执行命令替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4036731/

相关文章:

python - 在嵌入式计算机上仅运行一个带有 GUI 的 Python 应用程序 : is a X server and a window manager really required?

c - I2C IOCTL 写入失败

bash - 如何输出shell查找结果和匹配号?

bash - 使用 bash 脚本时 ffmpeg 输入文件名的问题

c - 如何在 u-boot 中设置该寄存器的位

c++ - 搜索位域模板(密码本)

linux - 按任意键从另一个脚本继续

c# - 使用 OxyPlot 和 Mono/C# 进行内存泄漏

c - C 中的变量不显示?

c - 如何在 C 中创建一个 3 位变量作为数据类型?