Utilizzo sicuro di exec con PHP per eseguire ffmpeg
Domanda
Vorrei eseguire ffmpeg da PHP per scopi di codifica video.
Stavo pensando di usare i comandi exec o passthru. Tuttavia, sono stato avvertito che abilitare queste funzioni è un rischio per la sicurezza. Nelle parole del mio staff di supporto:
La direttiva 'disable_functions' viene utilizzata per disabilitare tutte le funzioni che consentono l'esecuzione di comandi di sistema. Questo è per una maggiore sicurezza del server. Queste funzioni PHP possono essere utilizzate per craccare il server se non utilizzate correttamente.
Suppongo che se exec è abilitato, qualcuno potrebbe (possibilmente) eseguire un comando unix arbitrario. Qualcuno conosce un modo sicuro per eseguire ffmpeg da PHP?
A proposito, sono su un server dedicato. Grazie in anticipo!
Soluzione
exec
non presenta di per sé un rischio per la sicurezza non più di quanto si farebbe se si accedesse a un terminale sicuro.
Pensaci in questo modo, se dovessi elencare il contenuto di una directory in questo modo
exec ('ls / foo / bar');
non importa ciò che il tuo utente ha inviato al tuo script php, elenca sempre e solo la directory specificata.
Fintanto che stai attento a disinfettare qualsiasi input dell'utente e ad astenersi dal fornire informazioni sensibili, dovresti essere a posto.
Utilizzare i seguenti metodi per sanatizzare l'input prima di eseguirlo sulla riga di comando:
- escapeshellarg () - Esci da una stringa da usare come un argomento shell
- escapeshellcmd () - Escape metacharacters
Altri suggerimenti
puoi provare a utilizzare una libreria ffmpeg-php ... disponibile qui: http: // sourceforge .net / progetti / ffmpeg-php /