Передача файла из file () в программу Perl PHP - PullRequest
1 голос
/ 21 февраля 2012

У меня есть PHP-код, в котором хранится содержимое URL-адреса с помощью метода file (), например

$contents=file("http://www.rcsb.org/pdb/files/2AID.pdb"); 

Мне нужно передать эти $ содержимого в perl-программу с помощью метода shell_exec (), что-то вроде следующего

$result=shell_exec("perl_prog.pl $contents");

Мой вопрос заключается в том, как передать это содержимое в программу Perl.Я попытался как следует

@file=<@ARGV>;

, но это не работает.Пожалуйста, помогите мне.

1 Ответ

3 голосов
/ 21 февраля 2012

Этот код shell_exec () крайне уязвим для внедрения в оболочку - вы уверены, что удаленная служба не будет содержать что-то вроде:

; rm -rf /

Также, file() возвращает содержимое файла в виде массива - вы не можете напрямую передавать массивы через командную строку. Только строки.

Умеренно более безопасная версия:

$contents = file_get_contents('http://etc....');
$safe_contents = escapeshellarg($contents);
$result = shell_exec('perl_prog.pl $safe_contents');

На стороне Perl вы бы использовали

my ($contents) = @ARGV;
...