在旧Java版本上运行应用程序

在旧Java版本上运行应用程序,java,security,Java,Security,在旧版本(很可能是不受支持的Java版本)上运行应用程序有哪些风险 假设我有一个桌面应用程序,需要安装Java6并指向它。虽然我了解与运行暴露于internet连接(例如通过浏览器插件)的应用程序相关的风险,但我不确定旧版本的Java会对未暴露于外部网络(如果有的话)的应用程序和环境造成多大风险 我不确定旧版本的Java如何会给未暴露于外部网络的应用程序和环境带来风险(如果有的话) 如果根本不使用旧的JVM,那么它可能不会带来任何风险。。。直到它被意外使用,等等 如果旧JVM上的Java应用程序

在旧版本(很可能是不受支持的Java版本)上运行应用程序有哪些风险

假设我有一个桌面应用程序,需要安装Java6并指向它。虽然我了解与运行暴露于internet连接(例如通过浏览器插件)的应用程序相关的风险,但我不确定旧版本的Java会对未暴露于外部网络(如果有的话)的应用程序和环境造成多大风险

我不确定旧版本的Java如何会给未暴露于外部网络的应用程序和环境带来风险(如果有的话)

如果根本不使用旧的JVM,那么它可能不会带来任何风险。。。直到它被意外使用,等等

如果旧JVM上的Java应用程序根本不使用网络,那么使用旧JVM可能没有明显的风险

如果应用程序使用组织内部网络上的网络,则存在以下风险:

  • 您的组织防火墙可能没有您想象的那么安全
  • 有很多种方式可以让某人进入你的内部网络;e、 g.通过(不同的)特洛伊木马应用程序等。一旦进入,他们可能会对您的内部服务器发起攻击
  • 不要低估一个流氓员工的可能性

您声明了不升级的原因:


这是运行它的先决条件之一,如果在单独安装Java8的情况下启动它,我会收到一条错误消息

这意味着您使用的是过时或无法维护的应用程序。这本身就是一种风险

将应用程序升级到与Java 8兼容的版本,或转换到将在Java 8上运行并在将来得到支持的应用程序的替代版本3。(下一次,请更加关注您/您的组织投资的应用程序的升级/支持/寿命!)


1-但没有人能完全肯定这一点

2-但是有一个潜在的风险,如果旧JVM中存在以前未公开的安全问题,可能会被利用,那么它们就不会得到修补


3-或者选择一个能够支持自己的开源应用程序。。。如果需要。

如果应用程序非常依赖于JRE版本,建议将该应用程序与所需的JRE捆绑在一起。(它适用于任何运行时,而不仅仅是Java),因此您可能会有一份专用于您的应用程序的JRE6副本

我不确定旧版本的Java会给应用程序和环境带来多大的风险

IMHO最大的问题是,如果您使用过时的JRE作为系统注册的运行时,那么它将用于运行任何jar文件或基于java的应用程序,而用户不知道使用了它。自JRE7和JRE8以来,已经修复了许多安全和性能问题,并添加了许多功能

因此,如果您真的必须使用Java6,不要安装它,只需复制JRE(这是发行许可证允许的)


您可以指向应用程序脚本中的JRE。在任何情况下,都不应使用系统/用户范围的环境变量(JAVA_HOME)来指向过时的JRE。

为什么桌面应用程序需要JAVA 6?如果在Java 8上运行它,哪一部分会破坏向后兼容性?这是运行它的先决条件之一,如果我在单独安装Java 8的情况下启动它,我会收到一条错误消息为什么?Java是向后兼容的。这不是一个现实的先决条件。有些情况并非如此。此外,如果业务逻辑的实现是错误的,则会导致其他问题(例如更改了哈希算法),如果您的代码是由不称职的人编写的,破坏了向后兼容性,则更有可能是他们的代码导致了更多的攻击向量,不幸的是,这种情况主要发生在不关心分发的新手/兼职开发人员身上。就连我也见过应用程序安装人员将用户范围的JAVA_主页指向自己的JRE副本,这是非常可怕的:/