首页 > 解决方案 > 使用 escapeshellarg() 保护用户输入

问题描述

我需要将一些用户输入与一些 shell_exec 和 exec 命令一起使用。我知道这可能是一个很大的安全风险,所以我想确保我做对了。

我的原始命令如下所示:

shell_exec('php getText.php "' . $_GET['title'] . '"');

exec('php importImages.php --comment="' . $_GET['comment'] . '"');

使用 escapeshellarg 包装用户输入是否可以保护此漏洞?使用会不会有什么问题?或者还有什么我应该关心的?

shell_exec('php getText.php "' . escapeshellarg($_GET['title']) . '"');

exec('php importImages.php --comment="' . escapeshellarg($_GET['comment']) . '"');

标签: phpescapingexec

解决方案


escapeshellarg()将为您引用和逃避您的价值观。

var_dump(escapeshellarg('foo'));
// output: string(5) "'foo'"

所以你的代码应该是这样的:

shell_exec('php getText.php ' . escapeshellarg($_GET['title']));
exec('php importImages.php --comment=' . escapeshellarg($_GET['comment']));

推荐阅读