沙箱化exec函数PHP

时间:2013-09-24 11:33:36

标签: php sandbox

我正在开发一个python教程网站的项目,这需要我允许用户在我的网站上执行python代码。为此,我在PHP中使用exec函数,代码在

下面
session_start();


$code = str_replace("\\n", PHP_EOL, $_GET['code']);
$code = str_replace("\\t", "    ", $code);
$filepath = "../tmp/" .  $_SESSION['username'] . (string) rand() . ".py";

$file = fopen($filepath, "w") or die("Cant open file");
fwrite($file, $code);
fclose($file);

$output = null;
exec("python " . $filepath, $output);
unlink($filepath);

foreach( $output as $line )
{
    echo $line;
    echo '<br>';
}   

这个PHP脚本所做的是获取用户提交的代码,将其保存到文件中,然后执行该文件,然后删除该文件。但过度这将允许用户在我的服务器上做任何他们想要的东西,他们可以通过python访问任何东西。我已经在执行之前实现了一些代码检查,例如检查是否使用了某些库,但有很多可以检查它们。我想知道是否有一种方法可以沙箱的exec功能,所以如果我的用户试图使用python库SYS做某事它不会让他们访问我的系统?

干杯。

1 个答案:

答案 0 :(得分:0)

您不希望沙箱,而是python interpreter。另一种选择是使用chroot。