Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个运行代码的网站_Java_Php_Javascript_Html_Css - Fatal编程技术网

Java 创建一个运行代码的网站

Java 创建一个运行代码的网站,java,php,javascript,html,css,Java,Php,Javascript,Html,Css,我目前正在开发一个编程竞赛网站,希望实现对提交代码和在网站上运行代码的支持。在谷歌搜索了相当一段时间后,我仍然没有找到任何关于这方面的“指南” 有人知道一个网站(或其他来源)包含一些基本的指导方针或基本规则吗 感谢所有回复 PS:如果有人想知道所有编程语言标签,我计划至少支持这些语言。对于Java,它非常简单: 您必须创建,以便将源代码上载到服务器(用于 例如,通过POST请求) 使用Java编译器API将源代码编译为字节码() 您正在编译的字节码可能会通过动态加载并启动它(您也可能会进行配置

我目前正在开发一个编程竞赛网站,希望实现对提交代码和在网站上运行代码的支持。在谷歌搜索了相当一段时间后,我仍然没有找到任何关于这方面的“指南”

有人知道一个网站(或其他来源)包含一些基本的指导方针或基本规则吗

感谢所有回复


PS:如果有人想知道所有编程语言标签,我计划至少支持这些语言。

对于Java,它非常简单:

  • 您必须创建,以便将源代码上载到服务器(用于 例如,通过POST请求)

  • 使用Java编译器API将源代码编译为字节码()

  • 您正在编译的字节码可能会通过动态加载并启动它(您也可能会进行配置)

  • 不要忘记MVC架构:)

小心——如果您发现很难将此项目分解为更小、更具战术性的问题,我强烈建议您不要尝试在您的站点上实际运行任何其他人的代码。就创建站点本身而言,我建议尽可能利用预构建的组件或服务——Wordpress、GitHub等

一旦获得提交,您将需要一种安全运行它们的方法。出于所有实际目的,这意味着您应该假设运行其他人代码的任何机器都可能会自动起火。虽然这些语言中的一些确实具有您应该能够用来在“沙箱”中运行代码的功能,但您可能不太精通所有这些语言,因此无法正确保护所有这些语言


类似于Amazon的EC2可能会有所帮助——当您需要运行提交时启动VM,完成后将其丢弃。他们有一些预配置的映像,可能非常适合运行此代码,如果某些东西因为错误或恶意代码而出现问题,您不必太在意,因为您只需要在完成后将其扔掉。

有一个网站已经这样做了,尽管是为了特定的目的:刮取数据

-与JSFIDLE不同,scraperwiki执行服务器端代码。据我所知,他们可能通过amazon实例对环境进行沙箱处理。考虑到他们所支持的语言和刮库的多样性,我不确定他们的代码是否可以被完全审计和清理

我认为大多数人对scraperwiki如何阻止黑客和垃圾邮件发送者滥用他们的资源感到困惑。他们对此相当缄默;要么他们手工审核了执行的每一段代码,要么黑客/垃圾邮件发送者还没有发现它们。由于站点具有特定功能,他们可能会检查数据利用率以确定可疑活动。。。但是,一个人的网站抓取是另一个人通过get/post进行的骚扰和注射

我的直觉是,他们永远不会公开说明他们的安全审计过程是什么样的

如果您真的必须这样做,在没有虚拟化的情况下,最简单的机械方法是使用eval()的变体。但是,并不是所有的语言都有这种能力。这就引出了选项B,即虚拟化。比我更好的人可以解释如何控制虚拟机达到这种效果,并且会提醒你不要让陌生人滥用你的资源。相反,我将分享我的PHP经验

几年前,我做了一个项目,在本地机器上动态执行代码。当您键入代码时,它通过ajax获取代码,并在每次击键后执行。下面是它行为的视频:


五年过去了,3个改进原型也完成了,我仍然不确定我如何负责任地将其作为一个公共资源加以锁定。

这看起来像是一个相对简单的步骤列表。运行javascript、html、css和jquery时,看一下它们是如何工作的。关于运行php,请看一下。在我看来,您的问题太广泛了。此外,我并不真正理解这个问题。你的应用程序只需要一个你想要支持的所有语言的解释器……你仍然没有找到任何指南,因为你不明白你想要什么,如果你明白了,你会问谷歌正确的问题,谷歌会回答你。在Dexter回答的逻辑中,你还应该看看