PHP具有2个紧密相关的函数 escapeshellarg() escapeshellcmd() 。他们似乎都做类似的事情,即帮助使字符串在system()/exec()/etc中更安全地使用。

我应该使用哪一个?我只希望能够接受一些用户输入并在其上运行命令,而不会炸毁所有内容。如果PHP的exec-type-function接受了一个字符串数组(如argv),而该字符串绕过了shell,我会使用它。类似于Python的 subprocess.call() 函数。

最佳答案

http://ie2.php.net/manual/en/function.escapeshellarg.php



顾名思义,escapeshellarg用作传递 shell 程序参数。例如,您要列出当前目录,

$dir = ".";
system('ls '.escapeshellarg($dir));
escapeshellcmd('ls $dir');

两者都做类似的事情,并且仅取决于您如何处理逻辑,在直接传递给这些方法以确保更好的安全性之前,请确保对您的输入进行规范化和验证。

关于php - escapeshellarg和escapeshellcmd有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1881582/

10-12 17:43