我正在开发一个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做某事它不会让他们访问我的系统?
干杯。