清除在 PHP 中构建 os 命令的不受信任的输入?
cleaning untrusted inputs that build os commands in PHP?
如何从 php 中的 url 中删除构建 os 命令的不受信任的输入?
当我 运行 自动测试 zaproxy 时,我收到 P1 的警报,表明您的输入正在构建 os 命令。所以我想知道如何清理 those 命令。
使用 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
如何从 php 中的 url 中删除构建 os 命令的不受信任的输入?
当我 运行 自动测试 zaproxy 时,我收到 P1 的警报,表明您的输入正在构建 os 命令。所以我想知道如何清理 those 命令。
使用 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