先前的答案涵盖了第一点(可能在本网站的其他地方多次)
对于第二点,如果你觉得你必须要有这个,我会提出一些建议.您可以编译自己的PHP二进制文件,排除您不希望用户需要的所有选项(可能省略除MySQL之外的所有选项).然后,您应该创建一个php.ini文件,该文件禁用任何有潜在危险的函数(对此使用disable_functions配置选项 – 请参阅其他答案).将内存使用和CPU时间限制为合理的数字(对于您希望允许用户运行的简单脚本).现在我们应该能够使用像system(“chroot / path / to / secure / dir ./php tempfile.php”);这样的东西在chrooted环境中运行所有这些. / path / to / secure / dir应该是您将用户PHP脚本写入临时文件的目录.它应该包含PHP可执行文件和安全的php.ini文件.这些文件和安全目录应该由运行脚本的用户(特别是PHP可执行文件和php.ini文件)以外的用户拥有,并且不可由任何人编写.安全目录应位于Web根目录之外.
现在,我不会假装我已经想到了一切,但希望这些想法可以成为您安全环境的基础.