Вызов команды оболочки из ruby с правильным экранированием аргумента

#ruby #shell #escaping

#ruby #оболочка #экранирование

Вопрос:

Я хочу безопасно выполнить следующее

 system "echo '#{params[:message]}' > /dev/log"
  

Каков правильный способ экранирования аргументов при вызове собственной команды?

(Пример злого ввода: '; rm -Rf *; echo 'I won. )

Комментарии:

1. Основное внимание уделяется правильному экранированию , а не правильному протоколированию . Это всего лишь пример.

Ответ №1:

Если вы сделаете

 system "echo", params[:message]
  

Тогда второй аргумент, будет отправлен в качестве аргумента, он не будет выполнен.

Комментарии:

1. Отличный ответ. Я должен принять это и опубликовать новый вопрос, если я хочу получить решение моей первоначальной проблемы.