Задать вопрос

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

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

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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽