有沒有辦法在Windows Server 2008上運行Java VM(java.exe
)並使用命令行參數或系統變量禁用所有網絡連接?如何禁用Java中的所有網絡連接
3
A
回答
9
您可以通過啓用默認Java安全管理做到這一點。默認情況下,沒有執行安全措施,因此您可以執行任何操作,但是如果安全管理器已啓用,則會限制網絡訪問,文件訪問和許多其他操作,除非您在安全策略文件中另行指定。
使默認安全管理器在啓動時將此參數傳遞給JVM。
java -Djava.security.manager=default my.main.Class
通過這樣做,從內部JVM這個任何網絡訪問嘗試將拋出java.net.NetPermission
。
這也會破壞文件訪問等功能,所以如果您需要允許,您需要在特殊安全策略文件(-Djava.security.policy=path/to/policy.file
)中指定這些文件。應該有很多關於如何設置它的例子,只需搜索「java權限」即可開始。
2
嗯,我還沒有嘗試過,但理論上你可以設置系統屬性爲SOCKS代理到一個不存在的,並根據文檔所有TCP套接字將通過SOCKS代理嘗試 - 並失敗。
事情是這樣的:
java -DsocksProxyHost=127.0.0.1 SomeClass
2
我有相同的任務來測試我們產品的離線安裝程序。上面所說的幾乎都是正確的,但創建.policy文件並不容易。以下是我所做的:
Crate通用策略文件,沒有權限解析主機名(請參閱下面的代碼段);
在jvm參數中增加了
-Djava.security.manager -Djava.security.policy=pathto/policy.file
;
通用.policy文件內容:
grant {
permission java.io.FilePermission "<<ALL FILES>>", "read,write,execute,delete";
permission java.util.PropertyPermission "*", "read,write";
permission java.lang.RuntimePermission "*";
permission java.net.NetPermission "*";
permission java.lang.reflect.ReflectPermission "*";
};
如果事情試圖在試驗過程中以外獲取內容時,出現安全異常。
相關問題
- 1. 如何禁用Docker中的所有網絡連接?
- 2. 禁用網絡連接
- 3. 如何禁用/啓用android應用程序的網絡連接?
- 4. 已禁用android emulator-x86網絡連接
- 5. WinCE 6.0禁用網絡連接
- 6. 如何在Python中禁用網絡連接代碼
- 7. 關閉所有底層網絡連接
- 8. Java網絡:連接Socket/InputStream
- 9. 如何啓用/禁用網絡連接選項編程
- 10. 連接到java中的網絡設備
- 11. 如何在不禁用LAN網絡的情況下禁用Internet連接
- 12. 如何在網絡連接禁用時顯示警報?
- 13. 如何暫時禁用JVM網絡連接
- 14. 如何爲進程動態禁用網絡連接?
- 15. java網絡接受線程之間的網絡連接
- 16. 如何從Windows應用程序檢測禁用的網絡接口連接?
- 17. 如何使用Java監控我的網絡連接?
- 18. 網絡連接
- 19. 列出連接到windows的所有可用網絡
- 20. 獲取網絡中所有斷開連接的節點對
- 21. C++中的網絡連接
- 22. Android中的網絡連接
- 23. 網絡之間的套接字連接超時有所不同
- 24. 支持網絡連接的Java Iterator
- 25. 關於網絡連接的Java輪詢
- 26. 跨網絡的java mysql連接
- 27. 如何將Visual Studio性能鏈接到啓用/禁用網絡連接?
- 28. 如何在Angular2中檢查用戶是否有網絡連接?
- 29. 網絡使用:如何連接到網絡共享?
- 30. 如何在Swift中獲得所有以前連接的Wi-Fi網絡?
解決方案應該能夠爲每個Java VM進程禁用網絡,並且應該從進程外部進行定義(不允許進程禁用其自己的網絡)。 – jelovirt 2011-01-10 10:15:45
這可能會被問得好一點。 – trojanfoe 2011-01-10 10:18:26