Безопасное использование exec с PHP для запуска ffmpeg
Вопрос
Я хотел бы запустить 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 /