Да. Оба примера должны передавать аргументы в bash -c
или sh -c
как arguments (, возможно, в кавычках ), а не внедрять их в код в виде строк.
Внедрение кода в виде строки в -строковый сценарий оболочки может привести к тому, что введенная строка вырвется из управляющих структур и выполнит произвольные команды, или заставит оболочку выполнять расширения, которые должны обрабатываться как текст.
Пример:
bash -c "echo $arg"
с $arg
, установленным в строку ; ls -la
.
В примере find
это становится проблемой, когда имена файлов или пути нарушают синтаксис сценария оболочки, в который они внедряются, или изменяют поток управления, что может привести к нежелательным последствиям.
Дополнительная ссылка: