Безопасное использование exec с PHP для запуска ffmpeg

StackOverflow https://stackoverflow.com/questions/1010518

  •  06-07-2019
  •  | 
  •  

Вопрос

Я хотел бы запустить ffmpeg из PHP для кодирования видео.

Я думал об использовании команд exec или passthru.Однако меня предупредили, что включение этих функций представляет собой угрозу безопасности.По словам моей службы поддержки:

Директива disable_functions используется для отключения любых функций, позволяющих выполнять системные команды.Это сделано для большей безопасности сервера.Эти функции PHP могут быть использованы для взлома сервера, если они не используются должным образом.

Я предполагаю, что если exec включен, то кто-то может (возможно) выполнить произвольную команду unix.Кто-нибудь знает безопасный способ запуска ffmpeg с PHP?

Кстати, у меня выделенный сервер.Спасибо заранее!

Это было полезно?

Решение

exec Сам по себе он не представляет большей угрозы безопасности, чем вход в защищенный терминал.

Подумайте об этом так: если бы вы перечислили содержимое каталога следующим образом:

exec( 'ls /foo/bar' );

не имеет значения, что ваш пользователь отправил в ваш php-скрипт, он всегда будет отображать только указанный каталог.

Если вы тщательно очищаете любые вводимые пользователем данные и воздерживаетесь от вывода конфиденциальной информации, с вами все в порядке.

Используйте следующие методы для очистки ввода перед его запуском в командной строке:

  • escapeshellarg() - Экранирование строки, которая будет использоваться в качестве аргумента оболочки.
  • escapeshellcmd() - Экранирование метасимволов оболочки

Другие советы

вы можете попробовать использовать библиотеку ffmpeg-php ... находится здесь: http: // sourceforge .net / проекты / FFmpeg-PHP /

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top