隐藏在线编译器中的文件夹

时间:2017-08-01 09:26:49

标签: amazon-web-services directory elastic-beanstalk

我开发了一个PHP应用程序,它作为在线代码编译器(在C,Java和Python中)并在AWS Elastic Beanstalk上托管。用户可以键入他的代码并提交以执行它。然后服务器将返回执行其代码的输出。

当用户输入my_app_url/some_dir时,网站会出现403错误。但是,用户仍然可以通过编写一些适当的代码来列出/var/www/html中的所有文件和目录。我知道我可以处理代码的输出来隐藏它们,但有没有更好的方法呢?

所有目录和文件归root:root所有。权限模式为755 for directory644 for file。 PHP应用程序以webapp运行。

1 个答案:

答案 0 :(得分:0)

首先我要说的是,让人们在您的服务器实例上运行任意代码并不是一个好主意。根据谁有权访问您的服务,以及它是如何控制或监控,您可能遇到各种麻烦(即发送垃圾邮件,进行DOS攻击或在您的服务器上托管非法内容的人),因为他们可以运行任何类型你机器上的代码。

回到你的问题,你需要以某种方式确保上传的代码只做你允许的东西。在Java中,您可以使用自定义安全策略(请参阅http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html),例如为了禁止从代码中访问文件。此外,您需要对内存使用和运行时设置一些限制,并终止任何超出它们的程序。我不熟悉C和Python,可能有类似的机制来控制进程正在做什么。像TopCoder这样的平台允许在他们的机器上运行你自己的代码,然而安全地实现这样的机制肯定是一项非常复杂的任务。