perl - 在使用 Perl 编写代码时安全地执行系统命令

标签 perl security

在用 Perl 编写代码时真的应该使用外部命令吗?我看到它的几个缺点。它不是系统独立的,而且还可能存在安全风险。你怎么认为?如果没有办法并且您必须使用 Perl 的 shell 命令,那么执行该特定命令(如检查 pid、uid 等)的最安全方法是什么?

最佳答案

这取决于在 Perl 中复制功能的难易程度。如果我需要在某些东西上运行 m4 宏处理器,我不会考虑尝试自己在 Perl 中复制该功能,因为 http://search.cpan.org/ 上没有模块。看起来很合适,看来其他人也同意我的看法。那么,在那种情况下,使用外部程序是明智的。另一方面,如果我需要读取目录的内容,则 readdir() 等加上 stat()lstat() 的组合在 Perl 中使用 比使用 ls 的输出更明智。

如果您需要执行命令,请仔细考虑如何调用它们。特别是,您可能希望避免 shell 解释参数,因此使用 system 的数组形式(另请参阅 exec )等,而不是命令加参数的单个字符串(这意味着 shell 用于处理命令行)。

关于perl - 在使用 Perl 编写代码时安全地执行系统命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13023594/

相关文章:

linux - 尝试获取 token 时 Xero Partner API Oauth 证书问题 (Linux/Perl)

perl - 检查所有子测试是否都通过 TEST::MORE

c# - 使用 XMS .NET API 对抗具有安全导出的安全通道

java - org.apache.cxf.binding.soap.SoapFault : Error during certificate path validation: Path does not chain with any of the trust anchors

php - 生成php_perl.dll失败

Perl: elsif, Python: elif, C/CPP/Java: else if

perl - 在 perl 项目中使用 maven

docker - Docker Content Trust 中是否有两个根 key ?

javascript - 防止 iframe 安全问题

php - 我可以用这段代码被黑吗?