2012-02-01 36 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

相關問題