#ruby #shell #escaping
#ruby #оболочка #экранирование
Вопрос:
Я хочу безопасно выполнить следующее
system "echo '#{params[:message]}' > /dev/log"
Каков правильный способ экранирования аргументов при вызове собственной команды?
(Пример злого ввода: '; rm -Rf *; echo 'I won.
)
Комментарии:
1. Основное внимание уделяется правильному экранированию , а не правильному протоколированию . Это всего лишь пример.
Ответ №1:
Если вы сделаете
system "echo", params[:message]
Тогда второй аргумент, будет отправлен в качестве аргумента, он не будет выполнен.
Комментарии:
1. Отличный ответ. Я должен принять это и опубликовать новый вопрос, если я хочу получить решение моей первоначальной проблемы.