gpt4 book ai didi

perl - 我应该在 Perl 中转义 shell 参数吗?

转载 作者:行者123 更新时间:2023-12-03 21:01:44 25 4
gpt4 key购买 nike

使用时system()在 Perl 中调用,您是否必须转义 shell 参数,还是自动完成?

参数将是用户输入,所以我想确保这是不可利用的。

最佳答案

如果您使用 system $cmd, @args而不是 system "$cmd @args" (数组而不是字符串),那么您不必转义参数,因为没有调用 shell 程序(请参阅 system )。 system {$cmd} $cmd, @args即使 $cmd 包含元字符并且 @args 为空(这被记录为 exec 的一部分)也不会调用 shell。如果 args 来自用户输入(或其他不受信任的来源),您仍然希望清除它们。见 -Tperlrun文档和 perlsec文档。

如果您需要读取输出或向命令发送输入,qxreadpipe没有等价物。相反,使用 open my $output, "-|", $cmd, @argsopen my $input, "|-", $cmd, @args虽然这不是可移植的,因为它需要一个真正的 fork这意味着只有 Unix ......我想。也许它的模拟叉可以在 Windows 上运行。更好的选择是类似 IPC::Run ,这也将处理管道命令到其他命令的情况,系统的多参数形式和 4 参数形式的 open 都无法处理。

关于perl - 我应该在 Perl 中转义 shell 参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/619926/

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