我有一个PHP代码,它通过file()方法存储url的内容,如
$contents=file("http://www.rcsb.org/pdb/files/2AID.pdb");
我需要通过shell_exec()方法将这些$内容传递给perl程序,如下所示
$result=shell_exec("perl_prog.pl $contents");
我的问题是如何将这个$内容传递给Perl程序。我试过跟随
@file=<@ARGV>;
但它不起作用。请帮帮我。
答案 0 :(得分:3)
那个shell_exec()代码完全容易受到shell注入攻击 - 你相信远程服务不会包含以下内容:
; 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;