可以通过调用执行 shell 命令的系统函数来执行 shell 命令。
这显然是不安全的,因为有人可以滥用程序并执行攻击者特定的操作系统命令。
不要使用特权程序(set-user-ID 或 set-group-ID 程序,或具有功能的程序)中的 system(),因为某些环境变量的奇怪值可能会用于破坏系统完整性。例如,可以操纵 PATH 以便以特权执行任意程序。请改用 exec(3) 系列函数,但不要使用 execlp(3) 或 execvp(3)(它们也使用 PATH 环境变量来搜索可执行文件)。
虽然我真的不明白其中的区别。是的,权限可能会有所不同,但我们仍然执行 os 命令并且它仍然容易受到攻击,不是吗?我错过了什么吗?
如何安全地执行系统命令而不用担心它会被滥用?