Как правильно экранировать строку?

Здравствуйте. Предположим, что я с помощью sudo команды извлекаю некоторый tar-архив в определенную папку sudo командой через php
exec("tar -xf $date $path  -C /home/ranger/$path");

Функции escapeshellcmd будет достаточно для того, чтобы обезопасить себя (исключить выполнение произвольной команды)?
Просто у меня переменная path берется из суперглобального массива $_GET[], и поэтому хотелось бы быть уверенным в том, что никто не сможет выполнить стороннюю команду.
  • Вопрос задан
  • 255 просмотров
Пригласить эксперта
Ответы на вопрос 1
gromdron
@gromdron
Работаю с Bitrix24
Если: $date и $path это у Вас пользовательские данные, то помимо данного аргумента я бы еще проверял бы:
1) $date - существующий архив, в котором только простые типы (необходимые для выполнения работы, желательно только текстовые)
2) $path - задавал бы сам из названия архива, а не из (например в вашем случае "../tmp" в полной строке соответствует "/home/ranger/../tmp", что соответствует '/home/tmp'), ну и соответственно ругался бы на две точки подряд
3) Папка /home/ranger/$path НЕ выполняет обработку скриптов, а только отдает данные.

P.S. На аргументах escapeshellarg, а escapeshellcmd на всю комманду
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы