在沙箱中从 PHP 运行 Java 程序

发布于 2024-11-27 15:10:12 字数 465 浏览 0 评论 0原文

我有一个小问题:我们必须运行Java程序,部分代码将由用户上传。 所以我想知道运行它们的最佳方式是什么?我知道两种可能的方法,

  1. exec("javac Usercode.class") 然后用 exec("java Main") 运行整个过程,但我尝试了 < code>exec() 并且它不起作用。也许是因为http不是root?但我不知道具体原因。
  2. http://php-java-bridge.sourceforge.net/pjb/

有什么建议吗?

另一个问题是,如何在沙箱中运行这些程序。我们有一个 Debian 服务器,所以在有限的时间内执行命令没有问题,但是有没有可能在沙箱中运行整个代码?

I have a little question: we have to run Java programs and parts of the code will be uploaded by the users.
So I want to know what's the best way to run them? I know 2 possible ways,

  1. exec("javac Usercode.class") and then run the whole thing with exec("java Main"), but I tried it with exec() and it don't work. maybe because the http is not root? But I don't know exactly why.
  2. http://php-java-bridge.sourceforge.net/pjb/ ?

Any suggestions?

And another question is, how can I run these programs in a sandbox. we have a Debian server and so it's no problem to execute the command with a limited time, but is there a possible way to run the whole code in a sandbox?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

错々过的事 2024-12-04 15:10:12

沙箱的想法:

  • 使用 Debian 的 schroot 命令在 chroot 中运行。防止他们访问 chroot 之外的文件,但不能防止他们执行打开套接字等操作。

  • 每个用户都有自己的 Linux 用户名,并根据该用户名进行验证。然后,命令将在适当的用户名下运行(例如,通过使用 sudo 或 set-uid 可执行文件)。

  • 维护虚拟服务器池 - 昂贵且复杂,但提供最佳隔离。

Ideas for sandboxing:

  • Run in a chroot using e.g. Debian's schroot command. Protects against them accessing files outside of the chroot but not against them doing things like opening sockets etc.

  • Each user has their own Linux username against which they validate. Commands will then be run under the appropriate username (e.g. by using sudo or a set-uid executable).

  • Maintain a pool of virtual servers - expensive and complicated but gives best isolation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文