我有一个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
中运行答案 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
,我实现了批准或拒绝连接的小逻辑。