执行 Shell 命令
为什么危险
传给 Shell 的输入可以用 ; 或 | 等字符追加命令,让攻击者控制服务器。请严格校验输入,并对每个参数进行转义。
system('ping -c 1 ' . $_GET['host']);
$host = $_GET['host'] ?? '';
if (!filter_var($host, FILTER_VALIDATE_IP)) {
exit('Invalid address');
}
system('ping -c 1 ' . escapeshellarg($host));
修复方法
避免调用 Shell。必须使用时,每个参数都经过 escapeshellarg(),命令名中不可包含用户输入。
扫描我的代码
扫描我的代码 →
粘贴文件,PHP Safe 会指出所有符合此规则的代码行。