2012-02-01 88 views
3

我想要举办一个名为Minecraft的游戏,并让人们上传他们自己的Java JAR。
现在我想限制他们到某个端口范围。
由于在虚拟盒子中运行所有的JVM,我们只是将它们堆叠起来,但是如何防止用户使用默认端口?
也许在启动行中使用javaagent?编辑:
这是一个很好的示例代码? 是否有可能围绕应用程序提供防火墙?

System.setSecurityManager(...); 
// invoke the jar with a URLClassLoader

+2

我不明白*关闭*票作为* off主题* - 看起来像一个有效的问题给我'SecurityManager'是可能的答案之一... – 2012-02-01 14:39:15

+2

@Voters:This is * not * off-话题。以编程方式限制应用程序的端口转换是一个完美的主题问题。 – skaffman 2012-02-01 14:39:39

回答

3

我想你实际上是在寻找一个沙箱而不是防火墙。 java security manager可让您通过策略执行此类操作。

3

您应该能够修改JVM的安全策略以限制网络访问。一些信息在这里:http://docs.oracle.com/javase/1.4.2/docs/guide/security/permissions.html#SocketPermission

+0

我怎么能实现呢?我必须运行一个JVM来执行具有这些权限的JAR吗?一些示例代码会很棒! – BronzeByte 2012-02-01 14:52:04

+0

@BronzeByte:阅读整个页面(或至少开始) – skaffman 2012-02-01 14:54:05

+0

@BronzeByte - 你会把上传的jar文件放在一个特定的文件夹中,并将该位置的权限设置为'codebase'。该策略文件已存在于JVM配置中 - 您只需编辑它。在我链接的页面顶部有示例配置和信息。 – sje397 2012-02-01 14:55:00

0

那么其他安全问题如文件系统访问呢?看起来像在浏览器中需要像Applet一样受限制的虚拟机(Applet Security Managers)。

+0

JVM的意思是Java虚拟机,现在只需要使它不访问主机系统:)但我已经有一个应用程序没有触及其他文件(尚未测试),我chmod一切都好:) – BronzeByte 2012-02-01 14:49:58

相关问题