是否可以阻止JVM访问特定的URL?

时间:2019-04-24 20:22:49

标签: java linux security

我有一个Java应用程序,在启动时,我想确保它无法访问给定的URL(通过DNS或IP)。

到目前为止,JVM安全策略看起来非常合适, 我可以使用安全管理器和自定义策略文件启动Java应用程序。

java -Djava.security.manager *

问题是我看不到如何在策略文件中创建黑名单,只能看到添加白名单的功能。

理想情况下,我想添加

permission java.security.AllPermission;

,例如黑名单

permission java.net.SocketPermission "8.8.8.8:53", "connect";

但是我看不到如何在策略文件中创建拒绝权限或黑名单

P.S。 我无法使用iptables,因为JVM在非特权的Docker容器https://serverfault.com/questions/342357/block-an-ip-on-linux-without-the-use-of-iptables

中运行

1 个答案:

答案 0 :(得分:1)

我应该改为使用Java安全管理器,而不是使用安全策略,并覆盖

public void checkConnect(String host, int port);
public void checkConnect(String host, int port, Object context);

https://docs.oracle.com/javase/7/docs/technotes/guides/security/smPortGuide.html

通过不替代其他方法,我将允许所有其他方法,并且在此方法中,基于String host,我实现了批准或拒绝连接的小逻辑。