Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 针对旧JDK编译的安全问题_Java_Security - Fatal编程技术网

Java 针对旧JDK编译的安全问题

Java 针对旧JDK编译的安全问题,java,security,Java,Security,针对较旧的JDK进行编译是否存在任何已知的安全问题?例如,让我们假设Oracle决定在他们的一个实现中更改某些内容,以关闭一个安全漏洞。如果我们针对较旧的JDK进行编译,我们还会受到攻击吗 编辑 我们是针对JDK 6运行的,我们是针对Java 5编译的,这是我试图为任何其他看到这个问题的人找到的问题的症结所在。为了完整性,让我们假设在ant构建中,我们的目标是1.5 编辑2 此外,应用程序中存在调用问题,这些调用可能具有无法直接访问的私有API/实现。我想说的是,这些未修复的漏洞仍然存在,您和您


针对较旧的JDK进行编译是否存在任何已知的安全问题?例如,让我们假设Oracle决定在他们的一个实现中更改某些内容,以关闭一个安全漏洞。如果我们针对较旧的JDK进行编译,我们还会受到攻击吗

编辑

我们是针对JDK 6运行的,我们是针对Java 5编译的,这是我试图为任何其他看到这个问题的人找到的问题的症结所在。为了完整性,让我们假设在ant构建中,我们的目标是1.5

编辑2


此外,应用程序中存在调用问题,这些调用可能具有无法直接访问的私有API/实现。

我想说的是,这些未修复的漏洞仍然存在,您和您的应用程序仍然存在风险

这与使用旧的、未修补的操作系统或浏览器运行是同一个问题


迁移到新的JVM是一个很好的激励。

我想说,那些未修复的漏洞仍然存在,您和您的应用程序仍然处于风险之中

这与使用旧的、未修补的操作系统或浏览器运行是同一个问题


迁移到更新的JVM是一个很好的激励因素。

如果您根据JDK1.5编译:

  • 使用JRE 1.5的用户将易受攻击
  • 使用JRE 1.6的用户不会受到攻击
应用程序将使用用户运行时的库运行。由于这些漏洞已在Oracle的库中修复,您的应用程序现在正在调用该库,因此安全漏洞将得到缓解


但是,由于您是根据1.5编译的,因此您的用户将能够使用1.5。尽你所能避免这种脆弱性;如果无法避免,请在启动时检测JRE版本,并在适当时发出警报。

如果根据JDK 1.5编译:

  • 使用JRE 1.5的用户将易受攻击
  • 使用JRE 1.6的用户不会受到攻击
应用程序将使用用户运行时的库运行。由于这些漏洞已在Oracle的库中修复,您的应用程序现在正在调用该库,因此安全漏洞将得到缓解


但是,由于您是根据1.5编译的,因此您的用户将能够使用1.5。尽你所能避免这种脆弱性;如果无法避免,请在启动时检测JRE版本,并在适当时发出警报。

如果Oracle更改API(不是实现)以提高安全性,他们可能会添加
@不推荐的
注释,但会在一段时间内保留向后兼容性。注释将在较新的编译器中触发警告,但不会在您的编译器中触发,也不会在已编译的程序中触发。(除非Oracle决定抛出异常或记录来自不推荐使用的方法的消息。)

如果Oracle更改API(而不是实现)以提高安全性,他们可能会添加一个
@deprecated
注释,但在一段时间内保留向后兼容性。注释将在较新的编译器中触发警告,但不会在您的编译器中触发,也不会在已编译的程序中触发。(除非Oracle决定抛出异常或记录来自已弃用方法的消息。)

除了一些从未发生过的假设性利基情况外,唯一重要的是应用程序的执行版本

我不认为有任何已知的安全问题已经用@deprecated“修复”,因为这并不合适

这里有两个问题: 1) 您可以让Java编译器生成与旧版本二进制兼容的二进制文件。这会影响可用的语言功能

2) 您可以针对旧版本的Java系统库进行编译,这将影响可用的方法/类,因为它们总是添加新的方法/类

但这两个都不会影响应用程序的安全性。重要的是执行应用程序的运行时版本

请注意,安全问题是在更新之间修复的,而不是在主要版本之间修复的,因为主要版本会对语言本身进行更改。例如,Java6目前正在更新21。Java 6 update 19修复了Java 6 update 18中易受攻击的内容


当Java6Update19发布时,Java1.5和Java1.4的更新被发布,以修复Java1.5(更新24)和Java1.4(更新26)中的相同问题。请参见此处的安全基线表:

除了一些从未发生过的假设性利基情况外,唯一重要的是应用程序的执行版本

我不认为有任何已知的安全问题已经用@deprecated“修复”,因为这并不合适

这里有两个问题: 1) 您可以让Java编译器生成与旧版本二进制兼容的二进制文件。这会影响可用的语言功能

2) 您可以针对旧版本的Java系统库进行编译,这将影响可用的方法/类,因为它们总是添加新的方法/类

但这两个都不会影响应用程序的安全性。重要的是执行应用程序的运行时版本

请注意,安全问题是在更新之间修复的,而不是在主要版本之间修复的,因为主要版本会对语言本身进行更改。例如,Java6目前正在更新21。Java 6 update 19修复了Java 6 update 18中易受攻击的内容


当Java6Update19发布时,Java1.5和Java1.4的更新被发布,以修复Java1.5(更新24)和Java1.4(更新26)中的相同问题。请参阅此处的安全基线表:

我想我的解释可能有点不清楚,请参阅我的编辑。这个问题出现在我的脑海里,因为有