清理在PHP中构建os命令的不可信输入?

时间:2016-02-08 08:16:27

标签: php url code-injection inject

如何从php中删除从url构建os命令的不受信任的输入?

当我运行自动测试zaproxy时,我收到P1的警告,你的输入正在构建os命令。所以我想知道如何清理这些命令。

1 个答案:

答案 0 :(得分:0)

使用escapeshellarg()escapeshellcmd()转义数据以用作shell命令或参数。

// escapes a single argument
// sample input: "/foo/bar/"
$argument = escapeshellarg($userInput1); 
exec("ls $argument");

// escapes all special characters like [];{} for usage in command line
// sample input: "ls -l; rm -rf /"
$command = escapeshellcmd($userInput2);
exec($command);

您应该同时使用这两个命令来阻止用户在您的服务器上执行任意命令。

文档:

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