我要输入字母数字字符串(sha1 - git提交ID)。使用regexp /[^a-z0-9]/进行消毒,使用带空字符串的preg_replace是否足以安全地将其传递给shell?
发布于 2015-06-02 18:02:32
你走在正确的轨道上。您可以使用[^0-9a-f]而不是[^0-9a-z]来防止某人传递非十六进制字符。
$arg = preg_replace('/[^0-9a-f]/', '', $arg);
if (strlen($arg) === 40) {
// We have a SHA-1 hash
shell_exec("git checkout {$arg}");
}在一般情况下,escapeshellarg()是您想要使用的,但是为您的特定用例进一步缩小它也是一个好主意。
https://stackoverflow.com/questions/30593580
复制相似问题