2009-06-18 2 views
3

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

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

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

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

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

+0

Проверьте мой qu estion: http://stackoverflow.com/questions/4173405/convert-using-ffmpeg-without-exec где-то в комментариях есть способ, которым вы можете это сделать, это перекодирование библиотеки php и добавление к ней некоторых вещей –

ответ

7

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

Подумайте об этом так, если бы вы перечислить содержимое каталога как так

exec('ls /foo/bar');

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

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

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

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

Спасибо! Поэтому я уверен, что я в безопасности, так как я генерирую собственные входы в команду ffmpeg. –

+1

@Josiah: Я думаю, что вы имели в виду exec(); не eval(). http://us2.php.net/manual/en/function.exec.php –

+0

@ Андрей: Спасибо, я внесла поправки. – Josiah