问题描述
我正在尝试使用 JNLP 文件启动 Java 应用程序“Java-app”。
场景:
- 此 Java 应用程序与运行在 同一台机器或不同的机器,让我们说这台机器作为 “机器-A”。
- Java-app 连接“X”以验证用户名和密码。
- 请注意,“Java-app”和“X”之间的连接是使用自签名或 CA 证书加密的。
安全漏洞
我在以下用例中面临安全漏洞:
如果来自同一 Intranet 中另一台机器的黑客“Machine-B”(与“Java-app”或服务器“X”无关)尝试使用虚拟 X509 证书嗅探它们之间的流量,然后黑客可以通过伪装成虚拟服务器来查看Java-app和“X”之间共享的密码。
已知但不可行的解决方法:
我认为这个问题是因为在连接到服务器“X”时,Java-app 没有实现正确的证书验证。当前逻辑只是验证 X509 证书是否有效。就这样。这将适用于黑客证书。 可能的修复:如果有效证书已经存储在“Machine=A”的密钥库中,那么当 Java-app 与服务器“X”连接时,它可以根据密钥库中的证书验证连接。但是由于向后兼容性问题,这对我来说是不可行的。
那么有没有办法在使用 JNLP 启动 Java 应用程序时执行此证书验证。
更新
我找到了这个链接:https://docs.oracle.com/javase/8/docs/technotes/guides/javaws/developersguide/development.html 在“如果应用程序被编写为在安全沙箱中运行,它必须遵循以下限制:”它提到“网络连接仅启用到下载 JAR 文件的主机。”...这是否意味着如果其他主机可以使用网络连接,那么可能会出现此安全问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)