Очистка ввода в оболочке PHP

1

Я хочу ввести буквенно-цифровую строку (sha1 - git commit ID). Является ли sanitizing regexp /[^a-z0-9]/, используя preg_replace с пустой строкой, чтобы безопасно передать ее оболочке?

  • 1
    ну, обычно escapeshellarg() всего использовать escapeshellarg() ... php.net/manual/en/function.escapeshellarg.php
  • 0
    Это выглядит интересно, я не знал об этом ... Спасибо
Показать ещё 2 комментария
Теги:
security

1 ответ

1
Лучший ответ

Ты на правильном пути. Вы можете использовать [^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() - это то, что вы хотите использовать, но сужение его для вашего конкретного случая использования также является хорошей идеей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню